![](/img/trans.png)
[英]AWS Lambda SNS event is not binding to the correct SNS Topic ARN using Serverless yml
[英]How to subscibe to SNS topic with lambda ARN?
我使用aws_cdk.aws_lambda.Function
構造函數創建了一個 lambda 函數。 之后,我的目標是訂閱我用 boto3 創建的 SNS 主題。 但是,所需的參數之一是我嘗試使用dynamodb_lambda.function_arn
獲得的 lambda 函數 ARN,但問題是屬性返回未解析的令牌,更具體地說是${Token[TOKEN.240]}
這是代碼的一部分,以進一步闡明我在做什么。
dynamodb_lambda = lambda_.Function(
self, #scope
"foobar", #id
runtime = lambda_.Runtime.PYTHON_3_7,
handler = "lambda_handlers.dynamodb_lambda_handler", #filename.methodname at path
code = lambda_.Code.from_asset(path),
role = iam_.Role( #need this for cloudwatch access
self, #scope
"foobar", #id
assumed_by = iam_.ServicePrincipal('lambda.amazonaws.com'),
managed_policies = [
iam_.ManagedPolicy.from_aws_managed_policy_name('DynamoDBFullAccess')
]
)
)
client_sns = boto3.client("sns")
response = client_sns.create_topic(
Name = c.SNS_TOPIC_NAME,
Tags = [ # for easier filtering and searching
{
'Key': 'CohortStudent',
'Value': 'anon'
}
])
client_sns.subscribe(
TopicArn = response['TopicArn'],
Protocol = 'lambda', #usually "email" or "sms", see link above for possible values
Endpoint = dynamodb_lambda.function_arn
)
最后一個參數是我遇到麻煩的地方。 lambda 函數尚未創建,因此 ARN 是一個令牌,但 subscribe 函數不接受它。
botocore.errorfactory.InvalidParameterException: An error occurred (InvalidParameter) when calling the Subscribe operation: Invalid parameter: Lambda endpoint ARN
請幫助我了解如何解決這個問題。 任何幫助表示贊賞。
正如 luk2302 所評論的,使用 boto3 調用訂閱使用 aws_cdk 創建的 SNS 主題是錯誤的。 一個簡單的解決方法是使用 aws_cdk 訂閱 lambda。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.