我知道可以将参数传递给在AWS Lambda上运行的Java程序以进行测试.但如果调度事件调用此程序,我不知道如何传递这些参数.
有谁知道这是否可能?如果有,怎么样?我无法找到任何相关信息.
提前致谢
我需要使用aws cognito userpool授权我的API端点.我可以手动完成,但我需要使用无服务器框架自动化授权部分.
无服务器框架是否支持aws cognito?
如果是这样,我们如何设置无服务器的aws-userpool?
amazon-web-services amazon-cognito aws-lambda aws-api-gateway serverless-framework
我有一个lamba函数将对象从桶'A'复制到桶'B',一切都运行正常,直到名为'New Text Document.txt'的对象在桶'A'中创建,json被构建在S3事件中,键为"键":"新建+文本+文档.txt".
空格被'+'取代.我知道这是一个已知的问题,通过网络搜索.但我不知道如何解决这个问题,传入的json本身有一个'+'和'+'实际上可以在文件名中.比如'New + Text Document.txt'.
所以我不能盲目地在我的lambda函数中用'''来'''.
由于此问题,当代码尝试在存储桶中查找文件时,无法找到它.
请建议.
在用 Node.js 编写的 AWS lambda 中,当我通过 API 网关执行 GET 调用时,我想提取 URL 的以下部分:
/devices/{id} --> {id} will be replaced by a value, and that is the value I want!
Run Code Online (Sandbox Code Playgroud)
我知道要获得 QueryStringParameters 你只需使用
event.queryStringParameters.[parameter name]
Run Code Online (Sandbox Code Playgroud)
但是我将如何对路径参数执行此操作,例如上面的 {id}。
还有什么地方可以让我全面了解在 Node.js 中为 API 编写 lambda 表达式吗?
拥有 Node.js Lambda 函数我想使用 Node.js 的child_process命令运行 Python 脚本。
我遵循了这个AWS 教程,并在我的 .js 函数的开头包含了以下内容:
process.env[‘PATH’] = process.env[‘PATH’] + ‘:’ + process.env[‘LAMBDA_TASK_ROOT’];
Run Code Online (Sandbox Code Playgroud)
主要的 Python 脚本调用从这里开始:
const { spawn } = require('child_process');
function calculateSomething(next) {
var script = spawn('python', ['my_python_script.py', args]);
script.stdout.on('data', (data) => { doSomething(data); });
script.on('error', (error) => { console.error(error); });
script.on('exit', () => { next(); });
}
Run Code Online (Sandbox Code Playgroud)
Python 脚本使用外部库(例如 numpy)运行,因此我必须使用 pip 安装它。
现在:
我正在尝试在 Cloud9 中部署 Lambda 函数,但失败了。
当我右键单击该函数并单击“部署”时,我会看到Application deployment failed,然后出现一个弹出窗口:
AWS CloudFormation Deployment Errors
Stack:arn:aws:cloudformation:* is in UPDATE_COMPLETE_CLEANUP_IN_PROGRESS state and cannot be updated.
Run Code Online (Sandbox Code Playgroud) amazon-web-services aws-cloudformation aws-lambda aws-cloud9
我尝试了此答案中的解决方案,但对我不起作用。我收到错误:
提供的执行角色无权调用 EC2 上的 CreateNetworkInterface(服务:AWSLambdaInternal;状态代码:400;错误代码:InvalidParameterValueException;请求 ID:4c8d047c-2710-4334-86cd-51b7467c6f08)
这是与错误相关的 CloudFormation:
EventLambdaFunction:
Type: AWS::Lambda::Function
Properties:
FunctionName: !Sub ${DeveloperPrefix}event-lambda-${Environment}-${DeployPhase}
Handler: EventHandler
Runtime: java8
Code:
S3Bucket: !Ref SharedBucketName
S3Key: !Sub ${WorkspacePrefix}/event-subscriber-${AppVersion}.jar
S3ObjectVersion: !Ref EventLambdaS3Version
Role: !GetAtt EventLambdaRole.Arn
Environment:
Variables:
retry_event_table_name: !Sub "${DeveloperPrefix}${AppName}-${RetryEventTableName}-${Environment}-${DeployPhase}"
test_enabled: true # TODO: Remove once endpoint provided.
VpcConfig:
SecurityGroupIds:
- !Ref LambdaSecurityGroup
SubnetIds:
- Fn::ImportValue: !Sub ${VPCStackName}-SubnetPrivateL
- Fn::ImportValue: !Sub ${VPCStackName}-SubnetPrivateR
Timeout: 28
MemorySize: 256
EventLambdaRole:
Type: AWS::IAM::Role
Properties:
RoleName: !Sub ${DeveloperPrefix}${AppName}-${Environment}-${DeployPhase}-EventLambdaRole
AssumeRolePolicyDocument:
Statement:
- Effect: Allow
Principal:
Service: …Run Code Online (Sandbox Code Playgroud) amazon-ec2 amazon-web-services aws-cloudformation aws-lambda
我正在尝试运行 CDK 命令来检查本地和远程堆栈的差异。
我正在使用以下命令。
cdk diff --profile saml
Run Code Online (Sandbox Code Playgroud)
我收到以下错误消息
Unable to resolve AWS account to use. It must be either configured when you define your CDK or through the environment
Run Code Online (Sandbox Code Playgroud)
我正在寻找解决此问题的方法。
我正在尝试使用 aws cli 调用我的 lambda:
$ aws lambda invoke \
--function-name soc-update-dynamodb-java \
--invocation-type Event \
--payload file://invoke-payload.json \
response.json
Run Code Online (Sandbox Code Playgroud)
但是,我收到此消息:
调用 Invoke 操作时发生错误 (InvalidRequestContentException):无法将请求正文解析为 json:[Source: (byte[])"E?(?????U???? ?????k.....
payload.json 内容是一个类似 s3 事件的 json:
{
"Records": [
{
"eventVersion": "2.0",
"eventSource": "aws:s3",
"awsRegion": "eu-central-1",
"eventTime": "1970-01-01T00:00:00.000Z",
"eventName": "ObjectCreated:Put",
"userIdentity": {
"principalId": "EXAMPLE"
},
"requestParameters": {
"sourceIPAddress": "127.0.0.1"
},
"responseElements": {
"x-amz-request-id": "EXAMPLE123456789",
"x-amz-id-2": "EXAMPLE123/5678abcdefghijklambdaisawesome/mnopqrstuvwxyzABCDEFGH"
},
"s3": {
"s3SchemaVersion": "1.0",
"configurationId": "testConfigRule",
"bucket": {
"name": "soc-connect",
"ownerIdentity": {
"principalId": "EXAMPLE"
},
"arn": …Run Code Online (Sandbox Code Playgroud) 我正在尝试在 Terraform (v 0.13.0) 中设置我当前的基础设施。我只是从迁移现有的 lambda 函数开始。我已使用以下代码尝试将 .net core 3.1 中的现有 lambda 函数上传到 AWS(provider v.3.0)。我手动部署没有问题,但这显然不是目标。
这是 IAM 角色:
resource "aws_iam_role" "role_lambda" {
name = "roleLambda"
assume_role_policy = <<POLICY
{
"Version": "2012-10-17",
"Statement": [
{
"Action": "sts:AssumeRole",
"Principal": {
"Service": "lambda.amazonaws.com"
},
"Effect": "Allow",
"Sid": ""
}
]
}
POLICY
}
Run Code Online (Sandbox Code Playgroud)
在函数下方(注意我混淆了一些值):
resource "aws_lambda_function" "lambda_tf" {
function_name = "LambdaTFTest"
role = aws_iam_role.role_lambda.arn
handler = "Lambda::Lambda.Function::FunctionHandler"
runtime = "dotnetcore3.1"
s3_bucket = "arn:aws:s3:::xxxx-xxxxxx"
s3_key = "Lambda.zip"
s3_object_version = "XxXxXxXxXxXxXxXxXxXxXxXxXxXx"
}
Run Code Online (Sandbox Code Playgroud)
但是,我不断收到此错误作为输出,但没有更多详细信息:
Error: Error …Run Code Online (Sandbox Code Playgroud) amazon-web-services aws-lambda terraform terraform-provider-aws
aws-lambda ×10
amazon-s3 ×2
aws-cli ×2
java ×2
node.js ×2
amazon-ec2 ×1
api ×1
aws-cdk ×1
aws-cloud9 ×1
json ×1
python ×1
terraform ×1