diff --git a/documents/help/oss/obtain-signature-information-from-the-server-and-upload-data-to-oss.yml b/documents/help/oss/obtain-signature-information-from-the-server-and-upload-data-to-oss.yml
index 01f42075..db6f8b0d 100644
--- a/documents/help/oss/obtain-signature-information-from-the-server-and-upload-data-to-oss.yml
+++ b/documents/help/oss/obtain-signature-information-from-the-server-and-upload-data-to-oss.yml
@@ -13,6 +13,13 @@ Parameters:
is 3~63 characters. Must start and end with a lowercase English letter or
number, and can contain lowercase English letters, numbers, and dashes (-).
zh-cn: Bucket 名称在 OSS 范围内必须全局唯一。长度为3~63个字符。必须以小写英文字母或数字开头和结尾,可包含小写英文字母、数字和短划线(-)。
+ AssociationProperty: AutoCompleteInput
+ AssociationPropertyMetadata:
+ Length: 6
+ Prefix: testbucketname-
+ CharacterClasses:
+ - Class: lowercase
+ min: 1
AllowedPattern: ^[a-z0-9][a-z0-9-]{1,61}[a-z0-9]$
ZoneId:
Type: String
@@ -52,7 +59,7 @@ Parameters:
It must consist three of the the following character types: uppercase letters, lowercase letters, digits, and special characters.
Special characters include ()`~!@#$%^&*_-+=|{}[]:;'<>,.?/.
zh-cn: 长度为8-30位,需包含大写字母、小写字母、特殊符号和数字中的三个,允许的特殊字符包括()`~!@#$%^&*_-+=|{}[]:;'<>,.?/。
- Default: null
+ Default: Null
AllowedPattern: '[0-9A-Za-z\_\-&:;''<>,=%`~!@#\(\)\$\^\*\+\|\{\}\[\]\.\?\/]+$'
MinLength: 8
MaxLength: 30
@@ -83,12 +90,12 @@ Resources:
DeletionForce: true
CORSConfiguration:
CORSRule:
- - AllowedHeader:
- - '*'
- AllowedMethod:
- - POST
- AllowedOrigin:
- - '*'
+ - AllowedHeader:
+ - '*'
+ AllowedMethod:
+ - POST
+ AllowedOrigin:
+ - '*'
InstanceGroup:
Type: ALIYUN::ECS::InstanceGroup
Properties:
@@ -119,14 +126,14 @@ Resources:
Properties:
InstanceId:
Fn::Select:
- - 0
- - Fn::GetAtt:
- - InstanceGroup
- - InstanceIds
+ - 0
+ - Fn::GetAtt:
+ - InstanceGroup
+ - InstanceIds
AllocationId:
Fn::GetAtt:
- - Eip
- - AllocationId
+ - Eip
+ - AllocationId
SecurityGroupIngress_22:
Type: ALIYUN::ECS::SecurityGroupIngress
Properties:
@@ -136,16 +143,7 @@ Resources:
IpProtocol: tcp
NicType: intranet
PortRange: 22/22
- SecurityGroupIngress_80:
- Type: ALIYUN::ECS::SecurityGroupIngress
- Properties:
- SecurityGroupId:
- Ref: SecurityGroup
- SourceCidrIp: 0.0.0.0/0
- IpProtocol: tcp
- NicType: intranet
- PortRange: 80/80
- SecurityGroupIngress_443:
+ SecurityGroupIngress_3001:
Type: ALIYUN::ECS::SecurityGroupIngress
Properties:
SecurityGroupId:
@@ -153,135 +151,90 @@ Resources:
SourceCidrIp: 0.0.0.0/0
IpProtocol: tcp
NicType: intranet
- PortRange: 443/443
- SecurityGroupIngress_8080:
- Type: ALIYUN::ECS::SecurityGroupIngress
- Properties:
- SecurityGroupId:
- Ref: SecurityGroup
- SourceCidrIp: 0.0.0.0/0
- IpProtocol: tcp
- NicType: intranet
- PortRange: 8080/8080
+ PortRange: 3001/3001
ServerCommand:
Type: ALIYUN::ECS::RunCommand
Properties:
InstanceIds:
Fn::GetAtt:
- - InstanceGroup
- - InstanceIds
+ - InstanceGroup
+ - InstanceIds
Type: RunShellScript
Sync: true
Timeout: 3600
CommandContent:
Fn::Sub: |-
#!/bin/bash
- yum -y install unzip python3 nginx
- wget -O aliyun-oss-appserver-python-master.zip 'https://docs-aliyun.cn-hangzhou.oss.aliyun-inc.com/assets/attach/97721/cn_zh/1545016122500/aliyun-oss-appserver-python-master.zip?file=aliyun-oss-appserver-python-master.zip'
- unzip -o aliyun-oss-appserver-python-master.zip && mv aliyun-oss-appserver-python-preview_1.0.1-2f62c60e04b4ff204320adf47ded9d83fd79e826/* .
- rm -rf aliyun-oss-appserver-python-preview_1.0.1-2f62c60e04b4ff204320adf47ded9d83fd79e826
- sed -i 's//${AccessKey.AccessKeyId}/g' appserver.py
- sed -i 's//${AccessKey.AccessKeySecret}/g' appserver.py
- sed -i 's/bucket-name.oss-cn-hangzhou.aliyuncs.com/${BucketName}.oss-${ALIYUN::Region}.aliyuncs.com/g' appserver.py
- sed -i 's/expire_syncpoint = 1612345678/# expire_syncpoint = 1612345678/g' appserver.py
- touch runserver.sh && cat > runserver.sh << EOF
- pip3 uninstall crypto
- pip3 uninstall pycrypto
- pip3 install pycryptodome
- nohup python3 appserver.py &
+ yum -y install unzip
+
+ curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
+ source /root/.bashrc
+ nvm install 16
+
+ wget -O server-signed-direct-upload.zip 'https://peiyu-demo-bucket.oss-cn-beijing.aliyuncs.com/server-signed-direct-upload.zip'
+ unzip -o server-signed-direct-upload.zip
+ rm -rf server-signed-direct-upload.zip
+ cat > /root/server-signed-direct-upload/node-html-post-object/server/config.js << EOF
+ module.exports = {
+ accessKeyId: "${AccessKey.AccessKeyId}",
+ accessKeySecret: "${AccessKey.AccessKeySecret}",
+ region: "oss-${ALIYUN::Region}",
+ bucket: "${Bucket.Name}",
+ roleArn: "${Role.Arn}",
+ };
EOF
- bash runserver.sh
-
- mkdir -p /var/www/html && cd /var/www/html
- wget -O aliyun-oss-appserver-js-master.zip 'https://docs-aliyun.cn-hangzhou.oss.aliyun-inc.com/assets/attach/86983/APP_zh/1537971352825/aliyun-oss-appserver-js-master.zip?file=aliyun-oss-appserver-js-master.zip'
- unzip aliyun-oss-appserver-js-master.zip
- cd aliyun-oss-appserver-js-master/
- sed -i 's|88.88.88.88:8888|${Eip.EipAddress}:8080|g' upload.js
- sed -i "s|'callback' : callbackbody|//'callback' : callbackbody|g" upload.js
-
- touch /etc/nginx/conf.d/oss-client.conf
- cat > /etc/nginx/conf.d/oss-client.conf << EOF
- server {
- listen 80 default_server;
- server_name _;
- location / {
- root /var/www/html/aliyun-oss-appserver-js-master;
- index index.html;
- }
- }
- EOF
- systemctl start nginx
+ sed -i 's/127.0.0.1/${Eip.EipAddress}/g' /root/server-signed-direct-upload/node-html-post-object/index.html
+ cd /root/server-signed-direct-upload/node-html-post-object/
+ source /root/.bashrc
+ nohup npm start &
DependsOn:
- - SecurityGroupIngress_22
- - SecurityGroupIngress_443
- - SecurityGroupIngress_80
- - SecurityGroupIngress_8080
+ - SecurityGroupIngress_3001
+ - SecurityGroupIngress_22
+ - EipAssociation
User:
Type: ALIYUN::RAM::User
Properties:
UserName:
- Fn::Sub: create_by_document-${ALIYUN::StackId}
+ Fn::Sub: user-create-by-${ALIYUN::StackId}
PolicyAttachments:
System:
- - AliyunOSSFullAccess
+ - AliyunSTSAssumeRoleAccess
AccessKey:
Type: ALIYUN::RAM::AccessKey
Properties:
UserName:
Ref: User
+ Role:
+ Type: ALIYUN::RAM::Role
+ Properties:
+ RoleName:
+ Fn::Sub: ram-oss-test-create-by-${ALIYUN::StackId}
+ AssumeRolePolicyDocument:
+ Statement:
+ - Action: sts:AssumeRole
+ Effect: Allow
+ Principal:
+ RAM:
+ - Fn::Sub: acs:ram::${ALIYUN::TenantId}:root
+ Version: '1'
+ Policies:
+ - PolicyName:
+ Fn::Sub: policy-create-by-${ALIYUN::StackId}
+ PolicyDocument:
+ Version: '1'
+ Statement:
+ - Effect: Allow
+ Action:
+ - oss:PutObject
+ Resource:
+ - Fn::Sub: acs:oss:*:*:${Bucket.Name}/*
Outputs:
OssClientAddress:
Description:
en: Client address, use this address to directly experience file upload.
zh-cn: 客户端地址,使用此地址可直接体验文件上传。
Value:
- Fn::Sub: http://${Eip.EipAddress}
- ApplicationServerAddress:
- Description:
- en: Application server address, configure this address in the local client source
- code to experience file upload locally.
- zh-cn: 应用服务端地址,在本地客户端源码中配置此地址可在本地体验文件上传。
- Value:
- Fn::Sub: ${Eip.EipAddress}:8080
- EcsInstanceId:
- Description:
- en: Ecs instance id.
- zh-cn: ECS实例id。
- Value:
- Fn::Select:
- - 0
- - Fn::GetAtt:
- - InstanceGroup
- - InstanceIds
- EipAllocationId:
- Description:
- en: Eip allocation id.
- zh-cn: EIP实例id。
- Value:
- Fn::GetAtt:
- - Eip
- - AllocationId
- OssBucketName:
- Description:
- en: Oss bucket name.
- zh-cn: 存储空间名称。
- Value:
- Ref: Bucket
- EcsLoginAddress:
- Description:
- en: Ecs login address.
- zh-cn: ECS登录地址。
- Value:
- Fn::Sub:
- - https://ecs-workbench.aliyun.com/?from=EcsConsole&instanceType=ecs®ionId=${Region}&instanceId=${InstanceId}
- - Region:
- Ref: ALIYUN::Region
- InstanceId:
- Fn::Select:
- - 0
- - Fn::GetAtt:
- - InstanceGroup
- - InstanceIds
+ Fn::Sub: http://${Eip.EipAddress}:3001/index.html
Metadata:
ALIYUN::ROS::Interface:
ParameterGroups:
@@ -292,4 +245,4 @@ Metadata:
- SystemDiskCategory
- Password
TemplateTags:
- - acs:document-help:oss:服务端签名后直传
+ - acs:document-help:oss:服务端签名后直传
\ No newline at end of file