我创建了一个 lambda 函数,可以通过 API 网关访问该函数。但是,每当发出发布请求时,我都会收到以下错误
当我导航到控制台并查看 API Gateway 时,我有
最后,我的代码(Angular2)确实通过以下方式将适当的标头添加到请求中:
var headers = new HttpHeaders();
headers.append('Content-Type', 'application/json');
this.http.post('https://execute-api.us-east-1.amazonaws.com/prod/LambdaFunction', this.email, { headers: headers })
.subscribe(data => console.log(data),
err => console.log(err));
Run Code Online (Sandbox Code Playgroud)
知道如何解决这个问题吗?
我当前的 AWS 设置是一个 lambda 函数,每当我将对象放入 S3 存储桶时就会触发该函数。我用 Java 实现了 lambda 的处理函数。我想要做的只是访问已上传的文件并触发 lambda 函数的执行。例如,如果我上传sample.json到存储桶,我想在处理函数中访问该文件的内容。
我知道我可以做这样的事情:
public Void handleRequest(S3Event input, Context context) {
for (S3EventNotificationRecord record : input.getRecords()) {
String key = record.getS3().getObject().getKey();
String bucket = record.getS3().getBucket().getName();
AmazonS3 s3Client = new AmazonS3Client(credentials);
try {
S3Object s3Object = s3Client.getObject(new GetObjectRequest(bucket, key));
InputStream input = s3Object.getObjectContent();
BufferedReader reader = new BufferedReader(new InputStreamReader(input));
while (true) {
String line = reader.readLine();
if (line == null) break;
// Do something with line...
}
// ... …Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个 Cloudwatch 规则,该规则在实例终止时将 EC2 实例的名称(而不是 InstanceID)发送到 SNS。下面的代码片段是当我选择创建这个简单规则时 AWS 提供的默认事件模式,但我向“详细类型”对象添加了 1 个部分。此部分是“实例名称”。但这不起作用,因为我收到的 SNS 电子邮件仍然不包含实例的名称。它仅在消息中包含 InstanceID。
{
"source": [
"aws.ec2"
],
"detail-type": [
"Instance Name",
"EC2 Instance State-change Notification"
]
}
Run Code Online (Sandbox Code Playgroud)
到目前为止,我仅成功地从 Cloudwatch 规则获取了 InstanceID。是否可以通过 Cloudwatch 检索标签中的自定义元数据?
话虽这么说,如果无法通过 Cloudwatch,是否可以以某种方式将 SNS 主题发送到 Lambda,并使用 Lambda 函数将 instanceID 转换为实例名称?
我的项目的重点是,我可以使用 Lambda 运行一个脚本,一旦这些实例终止,该脚本就会从监控应用程序中删除这些实例。在 AWS 之外,我们使用他们的名称来识别他们,而不是他们的实例 ID。
amazon-ec2 amazon-web-services amazon-sns amazon-cloudwatch aws-lambda
我创建了一个 lambda 函数,发布了它的一个版本,并将该版本指向一个别名。我的 lambda 函数的 ARN:
"ARN - arn:aws:lambda:aws_region:aws_id:function:function_name:product"。
因此,在认知池触发器中,我需要将此 lambda 函数分配到“自定义消息”部分,但它是一个下拉列表,用于填充没有任何别名的 lambda 函数。
问题是,如何将 lambda 函数的别名版本从下拉列表分配到认知池触发器中。
我对 AWS 比较陌生,但阅读了大量文档,但找不到我需要的内容。
我正在尝试实现身份验证,用户支付订阅费用,并根据他们是否付费来访问 S3 存储桶和项目。
我尝试将 API Gateway 与 Cognito 授权者一起使用,但我不知道如何在用户已付款时添加检查(例如通过在 DynamoDB 中查找)。有没有办法向 Cognito 授权者添加自定义授权逻辑?如果没有,是否仍可以将 Cognito 用户池与自定义授权者一起使用?最重要的是,你将如何实施整个事情?
我愿意接受建议。
amazon-s3 amazon-web-services amazon-cognito aws-lambda aws-api-gateway
我有一个带有 Kestrel 的 ASP.NET Core 2 应用程序。该应用程序部署到 AWS Lambda/API Gateway。一切都按预期进行,除了一个导致一切不同的小细节。
对我的应用程序的某些请求需要发出多个与安全相关的Set-Cookie标头。由于 API Gateway 和 Lambda 之间传递数据的方式,重复的标头名称会连接在一起,这会导致标Set-Cookie头无效并且浏览器拒绝接受它。
克服此限制的建议解决方案是使用仅因大小写而异的多个标头名称:Set-Cookie, Set-cookie, set-cookie...
我知道这是一个 hacky 解决方案,但如果它有效,那么在 AWS 修复这个限制的同时,它应该已经足够好了。
但是,当使用 时HttpContext.Response.Headers.Add(name, value),已知的标头名称将被规范化并成为常规的重复标头。
是否有可能绕过这种常态化机制或以其他方式实现最终目标?
我正在使用 AWS,并且有以下设置:UserPool; API网关、Lambda函数
API 网关使用 UserPool 授权者来保护 lambda 函数。到目前为止,这是有效的。现在我想将每个 lambda 函数限制为特定的用户组。因此,我在 CognitoPool 中创建了两个用户组(user和admin),并使用策略为每个组分配了特定角色。之后,我在 UserPool 中创建了一个用户并将其添加到该user组中。该用户仍然能够向每个路由/lambda 函数提交请求。
我如何提交请求?
IdToken(经过身份验证的用户)AuthorizationAuthorization标头,响应是 401(如预期)Authorization标头,每个 lambda 函数都可以被触发(不是预期的)用户池组的配置:
团体用户:
Role ARN: arn:aws:iam::xxxxxx:role/User用户角色指定为
{
"Version": "2012-10-17",
"Statement": [
"Action": [
"lambda:InvokeFunction",
"lambda:InvokeAsync"
],
"Resource": [
"arn:aws:lambda:region:xxxxxx:function:api-dev-getItems
],
"Effect": "Allow"
]
}
Run Code Online (Sandbox Code Playgroud)群组管理员:
Role ARN: arn:aws:iam::xxxxxx:role/AdminAdminRole 指定为
{
"Version": "2012-10-17",
"Statement": [
"Action": [
"lambda:InvokeFunction",
"lambda:InvokeAsync"
],
"Resource": …Run Code Online (Sandbox Code Playgroud)amazon-web-services amazon-cognito aws-lambda aws-api-gateway
当我执行时
$ aws lambda list-functions
Run Code Online (Sandbox Code Playgroud)
我得到了所有 lambda 函数的列表:
{
"Functions": [
{
"TracingConfig": {
"Mode": "PassThrough"
},
"Version": "$LATEST",
"CodeSha256": "aB+/Defg0+abcdefghijklmnopqerstuvwxyzABCDEF=",
"FunctionName": "foofunction",
"VpcConfig": {
"SubnetIds": [],
"SecurityGroupIds": []
},
"MemorySize": 128,
"RevisionId": "123abc45-1234-1234-1234-123456789012",
"CodeSize": 61521970,
"FunctionArn": "arn:aws:lambda:us-east-1:123456789012:function:foofunction",
"Environment": {
"Variables": {
"FOO": "BAR",
"ESCAPING": "[\"a\", \"b\", \"c\"]",
"IS_VALUE": "1"
}
},
"Handler": "lambda_function.lambda_handler",
"Role": "arn:aws:iam::123456789012:role/service-role/lamdaRole",
"Timeout": 300,
"LastModified": "2018-03-01T12:11:10.987+0000",
"Runtime": "python3.6",
"Description": ""
}]
}
Run Code Online (Sandbox Code Playgroud)
是否可以用它来创建一个新的 lambda 函数?我正在寻找类似的东西
$ aws lambda create-function --config myconfig.json
Run Code Online (Sandbox Code Playgroud)
其中myconfig.json包含名称、环境变量、区域、角色、处理程序、运行时和描述。
我有 Lambda 函数tranportKickoff,它接收输入,然后将输入发送/代理到Step Function中。下面的代码确实运行,我没有收到任何错误,但同时步骤函数没有执行。
对于设计也很重要,我不希望函数transportKickoff等待步骤函数完成,因为它可能运行很长时间。然而,我希望调用Step Function 时出现的任何错误都会同步报告回来。也许这个想法是错误的,我不知何故错过了某个地方抛出的错误。但是,如果是这种情况,我想找到一种方法,能够实现在 Step Function 开始执行后立即退出 lambda 函数的目标。
注意:我可以独立执行步骤函数,并且我知道它工作正常
const stepFn = new StepFunctions({ apiVersion: "2016-11-23" });
const stage = process.env.AWS_STAGE;
const name = `transport-steps ${message.command} for "${stage}" environment at ${Date.now()}`;
const params: StepFunctions.StartExecutionInput = {
stateMachineArn: `arn:aws:states:us-east-1:999999999:stateMachine:transportion-${stage}-steps`,
input: JSON.stringify(message),
name
};
const request = stepFn.startExecution(params);
request.send();
console.info(
`startExecution request for step function was sent, context sent was:\n`,
JSON.stringify(params, null, 2)
);
callback(null, {
statusCode: 200 …Run Code Online (Sandbox Code Playgroud) 您好,下面是 clouformation,代码我们有 lambda 函数 s3 到 s3 复制的 python 代码片段。这里无法将目标存储桶从云形成参数传递到 python 代码片段,如 target_bucket = Ref: dstBucket
我现在正在硬编码 target_bucket = destination1 但我想作为 Ref 值传递
我尝试过不同的方法都没有成功。
---
AWSTemplateFormatVersion: '2010-09-09'
Description: 'objects from Prod bucket to Dev data bucket '
Parameters:
CustomerName:
Description: Customer Name
Type: String
Default: incoming
ProjectName:
Description: Project Name
Type: String
Default: TEST
ENV:
Description: Environment (dev, prd)
Type: String
Default: dev
srcBucket:
Description: Source Bucket that receives data from outside
Default: source1
Type: String
dstBucket:
Description: Destination Bucket …Run Code Online (Sandbox Code Playgroud) aws-lambda ×10
amazon-s3 ×2
amazon-ec2 ×1
amazon-sns ×1
angular ×1
aws-sdk ×1
c# ×1
cookies ×1
java ×1
lambda ×1