gpt4 book ai didi

amazon-web-services - 定义 cloudFormation 脚本时,无法从 lambda 函数中的环境访问 SNS_TOPIC_ARN 值

转载 作者:行者123 更新时间:2023-12-03 07:42:33 24 4
gpt4 key购买 nike

这是我的云形成脚本

AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Resources:
HelloWorldFunction:
Type: AWS::Serverless::Function
Properties:
Handler: index.handler
Runtime: nodejs12.x
Events:
HelloWorldApi:
Type: Api
Properties:
Path: /
Method: GET
Policies:
- SNSPublishMessagePolicy:
TopicName: !GetAtt HelloWorldTopic.TopicName
Environment:
Variables:
SNS_TOPIC_ARN: !Ref HelloWorldTopic
HelloWorldTopic:
Type: AWS::SNS::Topic
Properties:
Subscription:
- Endpoint: benja<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="197470776d757c7c2f2929597e74787075377a7674" rel="noreferrer noopener nofollow">[email protected]</a>
Protocol: email`enter code here`

这是我的 Lambda 函数:

const aws = require('aws-sdk');
aws.config.update({ region: 'eu-west-2' });
const sns = new aws.SNS({ region: 'us-east-1' });

exports.handler = async function (event, context) {
console.log('SNS_TOPIC_ARN: ' + process.env.SNS_TOPIC_ARN);
const params = {
Message: 'Hello World!',
Subject: 'SNS Notification from Lambda',
TopicArn: process.env.SNS_TOPIC_ARN,
};
try {
await sns.publish(params).promise();
return { statusCode: 200, body: 'Message sent' };
} catch (err) {
return { statusCode: 500, body: JSON.stringify(err) };
}
};

每次发出 API 请求时,由于某种原因,我都会收到一条错误消息:“参数无效:TopicArn 或 TargetArn 原因:所需参数没有值”。

如有任何建议,我们将不胜感激。

最佳答案

我注意到模板存在一些问题。

EnvironmentPolicies 应位于 Properties 下,就在 Type 下方。目前其外部Properties

此外,我相信 Policies 格式有点错误。通常情况下是这样的

Policies:
- AWSLambdaExecute
- Version: '2012-10-17'
Statement:
- Effect: Allow
Action:
- s3:GetObject
- s3:GetObjectACL
Resource: 'arn:aws:s3:::my-bucket/*'

在您的情况下,这将是 sns:publish 以及类似的内容

关于amazon-web-services - 定义 cloudFormation 脚本时,无法从 lambda 函数中的环境访问 SNS_TOPIC_ARN 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63074380/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com