You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS CDK使用s3deploy时无中间资产桶写入权限的解决方案问询

解决方案

方案1:前置同步本地文件到目标桶(最推荐,无需修改权限和核心逻辑)

直接弃用s3deploy库,在执行cdk deploy之前先运行AWS CLI同步命令,把本地文件夹直接上传到目标桶的对应路径即可:

aws s3 sync ./job/source/ s3://<替换为你的目标桶名>/glue/job/

后续创建Glue作业的CDK代码直接引用目标桶下的glue/job/路径就行,整个流程完全不会涉及CDK的中间资产桶,刚好适配你当前仅持有目标桶权限的场景。如果文件体积大、数量多,这个方式还支持增量上传,效率比栈内处理高很多。

方案2:CDK栈内实现无中间桶上传

如果要求上传动作必须和CDK栈部署流程绑定,不想额外执行独立命令,可以通过自定义资源实现:
把本地Glue代码嵌入到自定义资源的Lambda逻辑中,由Lambda直接写入目标桶,Lambda的执行角色仅需要你已经持有的目标桶读写权限,不需要访问中间资产桶。
示例代码如下:

import aws_cdk as cdk
from aws_cdk import aws_lambda, custom_resources as cr, aws_iam
import os

# 本地文件夹下如果有多个文件,可以批量读取压缩后再上传,这里以单文件为例
with open("./job/source/glue_job.py", "r", encoding="utf-8") as f:
    job_code = f.read()

# 实现写入S3逻辑的Lambda
write_s3_func = aws_lambda.Function(self, "WriteGlueCodeFunc",
    runtime=aws_lambda.Runtime.PYTHON_3_9,
    handler="index.handler",
    code=aws_lambda.Code.from_inline(f"""
import boto3
s3_client = boto3.client("s3")
def handler(event, context):
    s3_client.put_object(
        Bucket="{my_glue_bucket.bucket_name}",
        Key="glue/job/glue_job.py",
        Body={repr(job_code)}
    )
    return {{"Status": "SUCCESS"}}
""")
)
# 授予Lambda目标桶写入权限
my_glue_bucket.grant_write(write_s3_func)

# 注册为CDK自定义资源,栈部署时自动执行上传
cr.AwsCustomResource(self, "DeployGlueCode",
    on_create=cr.AwsSdkCall(
        service="Lambda",
        action="invoke",
        parameters={"FunctionName": write_s3_func.function_name}
    ),
    on_update=cr.AwsSdkCall(
        service="Lambda",
        action="invoke",
        parameters={"FunctionName": write_s3_func.function_name}
    ),
    policy=cr.AwsCustomResourcePolicy.from_statements([
        aws_iam.PolicyStatement(
            actions=["lambda:InvokeFunction"],
            resources=[write_s3_func.function_arn]
        )
    ])
)

方案3:调整s3deploy的资产存储配置(仅适合可修改CDK bootstrap配置的场景)

如果一定要使用s3deploy库,可以在执行CDK bootstrap时指定目标桶作为资产存储桶,让s3deploy直接把中间资产存到目标桶,但该操作需要bootstrap相关权限,权限受限场景不推荐使用。

内容的提问来源于stack exchange,提问作者Mert Ozer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 02:09:01