GitHub Actions中可执行IBM Cloud S3 ls命令但无法执行cp命令问题
问题原因
你的aws s3 cp命令中的S3资源路径缺少必填的s3://协议前缀。
IBM云对象存储对aws s3 ls命令的格式兼容度较高,即使你直接传入存储桶名不带前缀也可以正常识别;但aws s3 cp命令对参数格式校验更严格,要求S3端路径必须符合标准S3 URI格式,也就是必须以s3://开头,否则会被识别为本地路径,触发参数类型错误。
解决方案
直接修改你的cp命令,在存储桶变量前拼接s3://前缀即可:
aws --endpoint-url ${{ secrets.AWS_S3_ENDPOINT }} s3 cp s3://${{ secrets.AWS_S3_BUCKET }}/regression_model_full.rds models/regression_model_full.rds
额外优化建议:你已经在当前步骤的env中声明了所有S3相关的环境变量,可以直接调用环境变量,不需要重复引用secrets,写法更简洁:
aws --endpoint-url $AWS_S3_ENDPOINT s3 cp s3://$AWS_S3_BUCKET/regression_model_full.rds models/regression_model_full.rds
如果后续需要批量下载存储桶内的多个文件,也可以使用s3 sync命令,同样需要遵循S3 URI格式要求:
aws --endpoint-url $AWS_S3_ENDPOINT s3 sync s3://$AWS_S3_BUCKET/ ./models
内容的提问来源于stack exchange,提问作者Doug Fir
相关产品推荐
相关产品推荐

