簡體   English   中英

如何使用 lambda ARN 訂閱 SNS 主題?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM