您可以在下游任务需要依赖该OSS对象传入OSS时,使用OSS对象检查功能。例如,同步OSS数据至DataWorks,需要检测出已经产生OSS数据文件,才可以进行OSS同步任务。
OSS对象检查可以检测所有租户下的OSS对象,具体操作步骤如下:
- 登录DataWorks控制台,单击相应工作空间后的进入数据开发。
- 鼠标悬停至
,单击 。
您也可以打开相应的业务流程,右键单击通用,选择 。
- 在新建节点对话框中,输入节点名称,并选择目标文件夹,单击提交。
说明 节点名称的长度不能超过128个字符。
- 新建成功后,进行OSS对象检查节点配置。
序号 参数 描述 1 OSS对象 此处可以手动填写OSS对象的存储路径,路径支持使用调度参数,详情请参见调度参数。 2 超时时间 在超时时间内,每5秒检测该OSS对象是否存在于OSS中。如果超出超时时间,仍未检测到OSS对象的存在,则OSS对象检查任务会失败。 3 选择存储地址 您可以选择以下两种存储地址: - 自己的存储:检测当前租户下的OSS对象。
- 别人的存储:检测非当前租户下的OSS对象。
说明- 任务在运行时,会通过MaxCompute访问身份检查OSS对象,请确认OSS Bucket的权限设置,详情请参见STS模式授权。
- 在开发/生产环境中,任务会通过开发/生产环境访问身份检查OSS对象,请确认OSS Bucket的权限设置。
- OSS对象检查不支持通配符,也不支持系统参数cyctime和bizdate ,您可以使用自定义参数。
- 在RAM中授权MaxCompute访问OSS的权限。
MaxCompute结合了阿里云的访问控制服务(RAM)和令牌服务(STS),来解决账号的安全问题。
- 当MaxCompute和OSS的owner是同一个账号时,可以直接在RAM控制台进行一键授权操作。
- 当MaxCompute和OSS的owner不是同一账号时,可以通过以下操作进行授权:
- 在RAM中授权MaxCompute访问OSS的权限。
创建如AliyunODPSDefaultRole或AliyunODPSRoleForOtherUser的角色,并设置如下策略内容。
--MaxCompute和OSS的Owner不是同一个账号。 { "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": [ "MaxCompute的Owner云账号id@odps.aliyuncs.com" ] } } ], "Version": "1" }
- 授予角色访问OSS必要的权限AliyunODPSRolePolicy。
{ "Version": "1", "Statement": [ { "Action": [ "oss:ListBuckets", "oss:GetObject", "oss:ListObjects", "oss:PutObject", "oss:DeleteObject", "oss:AbortMultipartUpload", "oss:ListParts" ], "Resource": "*", "Effect": "Allow" } ] } --您可以自定义其他权限。
- 将权限AliyunODPSRolePolicy授权给该角色。
- 在RAM中授权MaxCompute访问OSS的权限。
- 进入运维中心页面,查看运行日志。
如果出现如下所示的日志信息,说明未检测到OSS对象产生。
<Error> <Code>NoSuchKey</Code> <Message>The specified key does not exist.</Message> <RequestId></RequestId> <HostId>oss对象</HostId> <Key>xc/111.txt</Key> </Error>