【发布时间】:2021-09-30 05:52:15
【问题描述】:
我已将管道设置为调用 AWS Lamba 函数。运行30分钟后显示错误
AWS Lambda 函数 cloudfront-invalidation 未能返回 结果。检查函数以验证它是否有权调用 PutJobSuccessResult 操作并调用 PutJobSuccessResult。
Lambda 角色有权设置 PutJobSuccessResult 和 Codepipeline Service 角色有权调用 lambda 函数。
这是我的 lambda 代码:
import boto3
import time
def lambda_handler(context, event):
sts_connection = boto3.client('sts')
acct_b = sts_connection.assume_role(
RoleArn="arn:aws:iam::1234567890:role/AssumeRole",
RoleSessionName="cross_acct_lambda"
)
ACCESS_KEY = acct_b['Credentials']['AccessKeyId']
SECRET_KEY = acct_b['Credentials']['SecretAccessKey']
SESSION_TOKEN = acct_b['Credentials']['SessionToken']
client = boto3.client(
'cloudfront',
aws_access_key_id=ACCESS_KEY,
aws_secret_access_key=SECRET_KEY,
aws_session_token=SESSION_TOKEN,
)
response = client.create_invalidation(
DistributionId='ABC',
InvalidationBatch={
'Paths': {
'Quantity': 1,
'Items': [
'/*',
]
},
'CallerReference': str(time.time()).replace(".", "")
}
)
invalidation_id = response['Invalidation']['Id']
print("Invalidation created successfully with Id: " + invalidation_id)
pipeline = boto3.client('codepipeline')
response = pipeline.put_job_success_result(
jobId= event['CodePipeline.job']['id']
)
return response
【问题讨论】:
-
任何 lambda 错误日志?
-
您能否展示 lambda 执行角色和代码管道角色的 iam 策略?
-
Lambda 角色策略:
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "logs:*" ], "Effect": "Allow", "Resource": "arn:aws:logs:*:*:*" }, { "Action": [ "codepipeline:PutJobSuccessResult", "codepipeline:PutJobFailureResult" ], "Effect": "Allow", "Resource": "*" } ] }Codepipeline 角色策略:AWSLambdaBasicExecutionRole
标签: python python-3.x aws-lambda aws-codepipeline