【问题标题】:Unable to reference public Lambda ARN layer when publishing via boto3通过 boto3 发布时无法引用公共 Lambda ARN 层
【发布时间】:2023-01-27 20:58:30
【问题描述】:

我有一个公共 ARN 层,我希望在部署 Lambda 函数时使用它。

我的代码的相关 sn-p 如下:

LAMBDA_ARN_LAYER = "arn:aws:lambda:eu-north-1:012345678901:layer:canedge-influxdb-writer-2:5"

lambda_client = session.client("lambda")

lambda_client.create_function(
    FunctionName=LAMBDA_FUNCTION_NAME,
    Runtime=PYTHON_BUILD,
    Role=LAMBDA_ROLE_ARN,
    Handler=LAMBDA_HANDLER,
    Code={"ZipFile": open(f"{LAMBDA_ZIP_FILE}.zip", "rb").read()},
    Timeout=180,
    MemorySize=1024,
    Layers=[LAMBDA_ARN_LAYER],
)

当我使用自己的帐户(我也用它来创建和发布 ARN 层)运行它时,它会正常运行。但是,如果我尝试使用不同的账户部署 Lambda 函数,我会收到以下错误:

An error occurred (AccessDeniedException) when calling the CreateFunction operation: User: arn:aws:iam::XXX:user/XXX is not authorized to perform: lambda:GetLayerVersion on resource: arn:aws:lambda:eu-north-1:012345678901:layer:canedge-influxdb-writer-2:5 because no resource-based policy allows the lambda:GetLayerVersion action

奇怪的是,我可以用同一个用户“手动”进入我的 Lambda 函数并添加 ARN 层,它可以正常工作,所以它看起来是公开的。

当我最初创建 Lambda ARN 层时,我使用了以下代码(在通过子进程引用 AWS CLI 的 Python 脚本中:

aws lambda publish-layer-version --region {region} --layer-name {layer_name} --description "{layer_description}" --cli-connect-timeout 6000 --license-info "MIT" --zip-file "fileb://canedge-influxdb-writer.zip" --compatible-runtimes python3.9

aws lambda add-layer-version-permission --layer-name {layer_name} --version-number {version} --statement-id allAccountsExample --principal * --action lambda:GetLayerVersion --region {region}

我尝试部署的用户具有默认的管理员访问权限:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "*",
            "Resource": "*"
        }
    ]
}

我在上面缺少什么?

【问题讨论】:

    标签: aws-lambda aws-cli aws-lambda-layers


    【解决方案1】:

    问题是我在最初设置 boto3 客户端时没有明确定义 region_name。解决这个问题后,问题就解决了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-05
      • 2021-07-25
      • 1970-01-01
      • 2021-06-19
      • 2018-02-02
      • 1970-01-01
      相关资源
      最近更新 更多