云工作流允许将对象存储 OSS(Object Storage Service)作为流程执行过程中的数据源或者数据存储介质,只需要配置简单的参数,既可实现工作流执行过程中对OSS数据的读写。同时,也支持OSS针对文件(Object)和存储空间(Bucket)的常用操作。本文分文件(Object)操作和存储空间(Bucket)操作两个场景介绍云工作流集成OSS的示例、参数说明以及集成输出。
文件(Object)操作
读取文件
集成示例
Type: StateMachine
Name: MyWorkflow
SpecVersion: v1
StartAt: GetObject
States:
- Type: Task
Name: GetObject
Action: OSS:GetObject
TaskMode: RequestComplete
Description: 读取OSS数据示例
Parameters:
region: cn-hangzhou
bucket: thebucketname
key: fileKey
versionId: CAEQMxiBgMCZov2D0BYiIDY4MDllOTc2YmY5MjQxMzdiOGI3OTlhNTU0ODIx**
range: 1024-
ifMatch: fba9dede5f27731c9771645a3986
ifNoneMatch: 5B3C1A2E0563E1B002CC607C
End: true
示例解析如下。
Action:固定为
OSS:GetObject
。TaskMode:仅支持请求响应(RequestComplete)集成模式。
参数说明
参数 | 是否必选 | 说明 | 示例 |
bucket | 是 | 文件所在的Bucket名称。 | thebucketname |
key | 是 | 需要被读取的文件key。 | mps/test.txt |
region | 否 | 存储空间所在的地域。默认为当前流程所在的地域。 | cn-hangzhou |
versionId | 否 | 请求Object的版本号。 | CAEQMxiBgMCZov2D0BYiIDY4MDllOTc2YmY5MjQxMzdiOGI3OTlhNTU0ODIx**** |
range | 否 | 指定文件传输的范围。
默认值:无。 | 1024~2048或1024~或~2048 |
ifMatch | 否 | 如果传入期望的ETag和Object的ETag匹配,则返回200 OK和Object Meta。否则返回412 precondition failed。 默认值:无。 | fba9dede5f27731c9771645a3986**** |
ifNoneMatch | 否 | 如果传入期望的ETag值和Object的ETag不匹配,则返回200 OK和Object Meta。否则返回304 Not Modified。 默认值:无。 | fba9dede5f27731c9771645a3986**** |
集成输出
{
"bucket": "thebucketname",
"key": "map/test.txt",
"data": "the file content"
}
上传文件
集成示例
Type: StateMachine
Name: MyWorkflow
SpecVersion: v1
StartAt: PutObject
States:
- Type: Task
Name: PutObject
Action: OSS:PutObject
TaskMode: RequestComplete
Description: 写入OSS数据示例
Parameters:
region: cn-hangzhou
bucket: thebucketname
key: fileKey
overwrite: true
data: hello world!!!
End: true
示例解析如下。
Action:固定为
OSS:PutObject
。TaskMode:仅支持请求响应(RequestComplete)集成模式。
参数说明
参数 | 是否必选 | 说明 | 示例 |
bucket | 是 | 文件所在的Bucket名称。 | thebucketname |
key | 是 | 需要被读取的文件key。 | mps/test.txt |
region | 否 | 存储空间所在的地域。默认为当前流程所在的地域。 | cn-hangzhou |
data | 否 | 请求体。
| hello world!! |
overwrite | 否 | 指定PutObject操作时是否覆盖同名Object。 取值说明如下:
默认值:false。 | false |
集成输出
{
"bucket": "thebucketname",
"key": "map/test.txt"
}
删除文件
集成示例
Type: StateMachine
Name: MyWorkflow
SpecVersion: v1
StartAt: DeleteObject
States:
- Type: Task
Name: DeleteObject
Action: OSS:DeleteObject
TaskMode: RequestComplete
Description: 删除OSS数据示例
Parameters:
region: cn-hangzhou
bucket: thebucketname
key: fileKey
versionId: CAEQMxiBgMCZov2D0BYiIDY4MDllOTc2YmY5MjQxMzdiOGI3OTlhNTU0ODIx**
End: true
示例说明如下。
Action:固定为
OSS:DeleteObject
。TaskMode:仅支持请求响应(RequestComplete)集成模式。
参数说明
参数 | 必填 | 说明 | 示例 |
bucket | 是 | 文件所在的Bucket名称。 | thebucketname |
key | 是 | 需要被读取的文件key。 | mps/test.txt |
region | 否 | 存储空间所在的地域。默认为当前流程所在的地域。 | cn-hangzhou |
versionId | 否 | 请求Object的版本号。 | CAEQMxiBgMCZov2D0BYiIDY4MDllOTc2YmY5MjQxMzdiOGI3OTlhNTU0ODIx**** |
集成输出
{
"bucket": "thebucketname",
"key": "map/test.txt"
}
检查某个文件是否存在
集成示例
Type: StateMachine
Name: MyWorkflow
SpecVersion: v1
StartAt: IsObjectExist
States:
- Type: Task
Name: IsObjectExist
Action: OSS:IsObjectExist
TaskMode: RequestComplete
Description: OSS文件是否存在判断
Parameters:
region: cn-hangzhou
bucket: thebucketname
key: fileKey
versionId: CAEQMxiBgMCZov2D0BYiIDY4MDllOTc2YmY5MjQxMzdiOGI3OTlhNTU0ODIx**
End: true
示例说明如下。
Action:固定为
OSS:GetObject
。TaskMode:仅支持请求响应(RequestComplete)集成模式。
参数说明
参数 | 是否必选 | 说明 | 示例 |
bucket | 是 | 文件所在的Bucket名称。 | thebucketname |
key | 是 | 需要被读取的文件key。 | mps/test.txt |
region | 否 | 存储空间所在的地域。默认为当前流程所在的地域。 | cn-hangzhou |
versionId | 否 | 请求Object的版本号。 | CAEQMxiBgMCZov2D0BYiIDY4MDllOTc2YmY5MjQxMzdiOGI3OTlhNTU0ODIx**** |
集成输出
{
"bucket": "thebucketname",
"key": "map/test.txt",
"exist": true
}
以追加写的方式上传文件
集成示例
Type: StateMachine
Name: MyWorkflow
SpecVersion: v1
StartAt: AppendObject
States:
- Type: Task
Name: AppendObject
Action: OSS:AppendObject
TaskMode: RequestComplete
Description: 追加OSS数据示例
Parameters:
region: cn-hangzhou
bucket: thebucketname
key: fileKey
overwrite: true
data: hello world!!!
End: true
示例解析如下。
Action:固定为
OSS:AppendObject
。TaskMode:仅支持请求响应(RequestComplete)集成模式。
参数说明
参数 | 是否必选 | 说明 | 示例 |
region | 否 | 存储空间所在的地域。默认为当前流程所在的地域。 | cn-hangzhou |
bucket | 是 | 文件所在的Bucket名称。 | thebucketname |
key | 是 | 需要被读取的文件key。 | mps/test.txt |
data | 否 | 请求体。
| hello world!! |
集成输出
{
"bucket": "thebucketname",
"key": "map/test.txt"
}
获取某个文件的元信息
集成示例
Type: StateMachine
Name: MyWorkflow
SpecVersion: v1
StartAt: GetObjectMeta
States:
- Type: Task
Name: GetObjectMeta
Action: OSS:GetObjectMeta
TaskMode: RequestComplete
Description: 读取OSS元数据示例
Parameters:
region: cn-hangzhou
bucket: thebucketname
key: fileKey
versionId: CAEQMxiBgMCZov2D0BYiIDY4MDllOTc2YmY5MjQxMzdiOGI3OTlhNTU0ODIx**
End: true
示例解析如下。
Action:固定为
OSS:GetObjectMeta
。TaskMode:仅支持请求响应(RequestComplete)集成模式。
参数说明
参数 | 是否必选 | 说明 | 示例 |
region | 否 | 存储空间所在的地域。默认为当前流程所在的地域。 | cn-hangzhou |
bucket | 是 | 文件所在的Bucket名称。 | thebucketname |
key | 是 | 需要被读取的文件key。 | mps/test.txt |
versionId | 否 | 请求Object的版本号。 | CAEQMxiBgMCZov2D0BYiIDY4MDllOTc2YmY5MjQxMzdiOGI3OTlhNTU0ODIx**** |
集成输出
{
"bucket": "thebucketname",
"key": "map/test.txt",
"meta": {
"Content-Length": 1024,
"ETag": "5B3C1A2E053D763E1B002CC607C5****",
"x-oss-last-access-time": "Tue, 30 Mar 2021 06:07:48 GMT",
"Last-Modified": "Fri, 24 Feb 2012 06:07:48 GMT",
"x-oss-version-id": "CAEQNRiBgIDMh4mD0BYiIDUzNDA4OGNmZjBjYTQ0YmI4Y2I4ZmVlYzJlNGVk****"
}
}
同Bucket拷贝文件
集成示例
Type: StateMachine
Name: MyWorkflow
SpecVersion: v1
StartAt: CopyObject
States:
- Type: Task
Name: CopyObject
Action: OSS:CopyObject
TaskMode: RequestComplete
Parameters:
key: src_object_key
destKey: dest_object_key
bucket: src-object-bucket
End: true
示例解析如下。
Action:固定为
OSS:CopyObject
。TaskMode:仅支持请求响应(RequestComplete)集成模式。
参数说明
参数 | 是否必选 | 说明 | 示例 |
key | 是 | 源Object的名称。 | src_object_key |
destKey | 是 | 目的Object的名称。 | dest_object_key |
bucket | 是 | 源文件所在的Bucket名称。 | src-object-bucket |
集成输出
{
"LastModified": "2024-12-03T05:26:33Z",
"ETag": "\"5BDE2EE1BB30D362F4F0CF9995BE3273\"",
"bucket": "src-object-bucket",
"key": "src_object_key",
"XMLName": {
"Space": "",
"Local": "CopyObjectResult"
}
}
跨Bucket拷贝文件
集成示例
Type: StateMachine
Name: MyWorkflow
SpecVersion: v1
StartAt: CopyObject
States:
- Type: Task
Name: CopyObject
Action: OSS:CopyObject
TaskMode: RequestComplete
Parameters:
key: src_object_key
destKey: dest_object_key
bucket: src-object-bucket
destBucket: dest-object-bucket
End: true
示例解析如下。
Action:固定为
OSS:CopyObject
。TaskMode:仅支持请求响应(RequestComplete)集成模式。
参数说明
参数 | 是否必选 | 说明 | 示例 |
key | 是 | 源Object的名称。 | src_object_key |
destKey | 是 | 目的Object的名称。 | dest_object_key |
bucket | 是 | 源文件所在的Bucket名称。 | src-object-bucket |
destBucket | 否 | 目的文件所在的Bucket名称。 | dest-bucket-name |
集成输出
{
"XMLName": {
"Space": "",
"Local": "CopyObjectResult"
},
"LastModified": "2024-12-03T05:34:03Z",
"ETag": "\"5BDE2EE1BB30D362F4F0CF9995BE3273\"",
"bucket": "src-object-bucket",
"key": "src_object_key"
}
存储空间(Bucket)操作
列举存储空间中所有文件的信息
集成示例
Type: StateMachine
Name: MyWorkflow
SpecVersion: v1
StartAt: ListObjects
States:
- Type: Task
Name: ListObjects
Action: OSS:ListObjects
TaskMode: RequestComplete
Description: 列举所有文件示例
Parameters:
region: cn-hangzhou
bucket: thebucketname
key: fileKey
delimiter: /
maxKeys: 10
prefix: test
startAfter: e
continuationToken: test1.txt
End: true
示例解析如下。
Action:固定为
OSS:ListObjects
。TaskMode:仅支持请求响应(RequestComplete)集成模式。
参数说明
参数 | 是否必选 | 说明 | 示例 |
region | 否 | 存储空间所在的地域。默认为当前流程所在的地域。 | cn-hangzhou |
bucket | 是 | 文件所在的Bucket名称。 | thebucketname |
delimiter | 否 | 对Object名字进行分组的字符。所有Object名字包含指定的前缀,第一次出现Delimiter字符之间的Object作为一组元素(即CommonPrefixes)。 默认值:无 | / |
maxKeys | 否 | 指定返回Object的最大数。 取值:0~1000 默认值:100 | 100 |
prefix | 否 | 限定返回文件的Key必须以Prefix作为前缀。
如果把Prefix设为某个文件夹名,则列举以此Prefix开头的文件,即该文件夹下递归的所有文件和子文件夹。 在设置Prefix的基础上,将Delimiter设置为正斜线(/)时,返回值就只列举该文件夹下的文件,文件夹下的子文件夹名返回在CommonPrefixes中,子文件夹下递归的所有文件和文件夹不显示。 例如,一个Bucket中有三个Object ,分别为fun/test.jpg、 fun/movie/001.avi和fun/movie/007.avi。若设定Prefix为fun/,则返回三个Object;如果在Prefix设置为fun/的基础上,将Delimiter设置为正斜线(/),则返回fun/test.jpg和fun/movie/。 | test |
startAfter | 否 | 设定从Start-after之后按字母排序开始返回Object。 Start-after用来实现分页显示效果,参数的长度必须小于1024字节。 做条件查询时,即使Start-after在列表中不存在,也会从符合Start-after字母排序的下一个开始打印。 | e |
continuationToken | 否 | 指定list操作需要从此Token开始。您可以从结果中的NextContinuationToken获取此Token。 | test1.txt |
集成输出
{
"bucket": "thebucketname",
"ContinuationToken": "filea",
"NextContinuationToken": "filez",
"Objects": [{
"Key": "file1",
"Size": 1024,
"ETag": "CAEQNRiBgIDMh4mD0BYiIDUzNDA4OGNmZjBjYTQ0YmI4Y2I4ZmVlYzJlNGVk****",
"LastModified": "Fri, 24 Feb 2024 06:07:48 GMT",
"StorageClass": "Standard"
}]
}
查看存储空间的相关信息
集成示例
Type: StateMachine
Name: MyWorkflow
SpecVersion: v1
StartAt: GetBucketInfo
States:
- Type: Task
Name: GetBucketInfo
Action: OSS:GetBucketInfo
TaskMode: RequestComplete
Description: 查看存储空间相关信息示例
Parameters:
region: cn-hangzhou
bucket: thebucketname
End: true
示例解析如下。
Action:固定为
OSS:GetBucketInfo
。TaskMode:仅支持请求响应(RequestComplete)集成模式。
参数说明
参数 | 是否必选 | 说明 | 示例 |
region | 否 | 存储空间所在的地域。默认为当前流程所在的地域。 | cn-hangzhou |
bucket | 是 | 文件所在的Bucket名称。 | thebucketname |
集成输出
{
"BucketInfo":{
"XMLName":{
"Space":"",
"Local":"Bucket"
},
"Name":"testbucketname",
"AccessMonitor":"Disabled",
"Location":"oss-cn-hangzhou",
"CreationDate":"2023-02-07T11:15:10Z",
"ExtranetEndpoint":"oss-cn-hangzhou.aliyuncs.com",
"IntranetEndpoint":"oss-cn-hangzhou-internal.aliyuncs.com",
"ACL":"private",
"RedundancyType":"LRS",
"Owner":{
"XMLName":{
"Space":"",
"Local":"Owner"
},
"ID":"11111",
"DisplayName":"11111111"
},
"StorageClass":"Standard",
"SseRule":{
"XMLName":{
"Space":"",
"Local":"ServerSideEncryptionRule"
},
"KMSMasterKeyID":"",
"SSEAlgorithm":"",
"KMSDataEncryption":""
},
"Versioning":"Enabled",
"TransferAcceleration":"Disabled",
"CrossRegionReplication":"Disabled"
},
"XMLName":{
"Space":"",
"Local":"BucketInfo"
}
}
获取指定存储空间的存储容量以及文件数量
集成示例
Type: StateMachine
Name: MyWorkflow
SpecVersion: v1
StartAt: GetBucketStat
States:
- Type: Task
Name: GetBucketStat
Action: OSS:GetBucketStat
TaskMode: RequestComplete
Description: 查看存储空间相关信息示例
Parameters:
region: cn-hangzhou
bucket: thebucketname
End: true
示例解析如下。
Action:固定为
OSS:GetBucketStat
。TaskMode:仅支持请求响应(RequestComplete)集成模式。
参数说明
参数 | 是否必选 | 说明 | 示例 |
region | 否 | 存储空间所在的地域。默认为当前流程所在的地域。 | cn-hangzhou |
bucket | 是 | 文件所在的Bucket名称。 | thebucketname |
集成输出
{
"ArchiveObjectCount":0,
"ArchiveRealStorage":0,
"ArchiveStorage":0,
"ColdArchiveObjectCount":0,
"ColdArchiveRealStorage":0,
"ColdArchiveStorage":0,
"InfrequentAccessObjectCount":0,
"InfrequentAccessRealStorage":0,
"InfrequentAccessStorage":0,
"LastModifiedTime":1698152609,
"LiveChannelCount":0,
"MultipartUploadCount":4,
"ObjectCount":189,
"StandardObjectCount":189,
"StandardStorage": 123123,
"Storage": 123123,
"XMLName":{
"Space":"",
"Local":"BucketStat"
}
}
创建一个存储空间
集成示例
Type: StateMachine
Name: MyWorkflow
SpecVersion: v1
StartAt: CreateBucket
States:
- Type: Task
Name: CreateBucket
Action: OSS:CreateBucket
TaskMode: RequestComplete
Description: 创建一个存储空间示例
Parameters:
region: cn-hangzhou
bucket: thebucketname
acl: private
storageClass: Standard
dataRedundancyType: LRS
End: true
示例解析如下。
Action:固定为
OSS:CreateBucket
。TaskMode:仅支持请求响应(RequestComplete)集成模式。
参数说明
参数 | 是否必选 | 说明 | 示例 |
region | 否 | 存储空间所在的地域。默认为当前流程所在的地域。 | cn-hangzhou |
bucket | 是 | 文件所在的Bucket名称. | thebucketname |
acl | 否 | 指定Bucket的访问权限ACL。包含如下三种访问权限:
| private |
storageClass | 否 | Bucket的存储类型。 取值范围如下:
| Standard |
dataRedundancyType | 否 | 指定Bucket的数据容灾类型。
说明 归档类型的Bucket不支持设置同城冗余。 | LRS |
集成输出
# 创建一个存储空间的输出为空
{
}
删除存储空间
集成示例
Type: StateMachine
Name: MyWorkflow
SpecVersion: v1
StartAt: DeleteBucket
States:
- Type: Task
Name: DeleteBucket
Action: OSS:DeleteBucket
TaskMode: RequestComplete
Description: 删除存储空间示例
Parameters:
region: cn-hangzhou
bucket: thebucketname
End: true
示例解析如下。
Action:固定为
OSS:DeleteBucket
。TaskMode:仅支持请求响应(RequestComplete)集成模式。
参数说明
参数 | 是否必选 | 说明 | 示例 |
region | 否 | 存储空间所在的地域。默认为当前流程所在的地域。 | cn-hangzhou |
bucket | 是 | 文件所在的Bucket名称。 | thebucketname |
集成输出
# 删除一个存储空间的输出为空
{
}
列举请求者拥有的所有存储空间
集成示例
Type: StateMachine
Name: MyWorkflow
SpecVersion: v1
StartAt: ListBuckets
States:
- Type: Task
Name: ListBuckets
Action: OSS:ListBuckets
TaskMode: RequestComplete
Description: 列举请求者拥有的所有存储空间示例
Parameters:
region: cn-hangzhou
bucket: thebucketname
End: true
示例解析如下。
Action:固定为
OSS:ListBuckets
。TaskMode:仅支持请求响应(RequestComplete)集成模式。
参数说明
参数 | 是否必选 | 说明 | 示例 |
region | 否 | 存储空间所在的地域。默认为当前流程所在的地域。 | cn-hangzhou |
prefix | 否 | 限定返回的Bucket名称必须以prefix作为前缀。如果不设定,则不过滤前缀信息。 默认值:无 | prefix |
marker | 否 | 设定结果从marker之后按字母排序的第一个开始返回。如果不设定,则从头开始返回数据。 默认值:无 | mybucket10 |
maxKeys | 否 | 限定此次返回Bucket的最大个数。 取值范围:1~1000 默认值:100 | 10 |
集成输出
{
"Buckets":[
{
"XMLName":{
"Space":"",
"Local":"Bucket"
},
"Name":"bucket1",
"Location":"oss-cn-shanghai",
"CreationDate":"2023-07-27T10:49:37Z",
"StorageClass":"Standard"
},
{
"XMLName":{
"Space":"",
"Local":"Bucket"
},
"Name":"bucket2",
"Location":"oss-cn-shanghai",
"CreationDate":"2023-09-19T07:26:46Z",
"StorageClass":"Standard"
}
],
"IsTruncated":true,
"Marker":"",
"MaxKeys":100,
"NextMarker":"cri-9rbedixxxxum7zxs-registry",
"Owner":{
"XMLName":{
"Space":"",
"Local":"Owner"
},
"ID":"11111111",
"DisplayName":"1111111111"
},
"Prefix":"",
"XMLName":{
"Space":"",
"Local":"ListAllMyBucketsResult"
}
}