我想从执行角色有权执行该 API 网关的执行 AWS Lambda 调用授权设置为 AWS_IAM 的 AWS API 网关端点。
无论如何,我是否可以使用我的 Lambda 的当前执行角色对 API Gateway 的 HTTPS 请求进行签名?
编辑:
查看http://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_use-resources.html,我可以使用 SDK 调用 AssumeRole 来承担有权执行 Api Gateway 的角色,然后提取可用于签署请求的密钥。
我知道可用于重复运行 Lambda 的 CloudWatch 重复事件..但是有没有办法可以在特定时间触发它而不重复?
下午,
我最近遇到了 AWS Lambda 和 Azure Functions。AWS 对压缩和解压文件的大小施加了限制,对于 python 脚本需要包含所有依赖模块。我一直在使用 lambda-uploader 来打包我的脚本和它的模块依赖项,但是 pandas 包太大了。
我见过人们在 AWS Lambda 上完成机器学习和使用 Pandas 的例子(虽然有点过时),但我看不出他们是怎么做的。有什么建议?
我希望我的 lambda 调用 API,这需要一个 API 令牌。我想将 API 令牌放入 lambda 环境变量中。我怎样才能让 terraform 做到这一点?还是我以错误的方式接近这个?
我正在尝试迁移AWS Lambda编写的函数PythonCF
输出 > 2GB - 但略小于 3GB 所以它适合Lambda,只是.
好吧,这似乎是不可能的,或者更多地涉及GCP:
/tmp- 在撰写本文时限制为 2048MB - 所以 Python 客户端库upload_from_file(或_filename无法使用)boto一个最初为 设计的库AWS S3,并且已经过时boto3了一段时间。没有真正的GCP流式写入或读取方法createWriteStream()-好的文章在这里顺便说一句-但没有相应的一行代码在PythonGCS是本地文件系统一样。这不仅限于Cloud FunctionsPython Client 库所缺乏的功能,而且由于资源限制,它在 CF 中更为突出。顺便说一句,我参与了添加可写 IOBase 函数的讨论,但它没有吸引力。python azure-storage google-cloud-storage aws-lambda google-cloud-functions


构建规范.yml:
version: 0.2
phases:
build:
commands:
- echo Build started on `date`
- echo Compiling the Python code...
- python HelloWorld_tst.py
post_build:
commands:
- echo Build completed on `date`
artifacts:
files:
- HelloWorld.py
- appspec.yml
discard-paths: yesRun Code Online (Sandbox Code Playgroud)
appspec.yml
version: 0.0
Resources:
- autovisionfunction:
Type: AWS::Lambda::Function
Properties:
Name: "autovisionfunction"
Alias: "staging"
CurrentVersion: "1"
TargetVersion: "2"
Run Code Online (Sandbox Code Playgroud)
似乎在 CodePipeline 中找不到 appspec.yml
我已经从 S3 存储桶下载了人工制品 zip,里面有 appspec.yml。

我想念什么?
谢谢
奥利亚
amazon-web-services aws-code-deploy aws-lambda aws-codepipeline
长话短说,我不想将任务的 ECS 任务定义修订号硬编码到我的 lambda 源代码中。每次我有更新的任务定义时,基本上都在费力地更新我的源代码。在ECS 的 boto3 文档中run_task(),它明确指出
taskDefinition (string) -- [必需]
要运行的任务定义的系列和修订 (family:revision ) 或完整 ARN。如果未指定修订版,则使用最新的 ACTIVE 修订版。
但是,我发现如果我taskDefinition在client.run_task()没有特定修订号的情况下定义参数,则会出现权限错误:
调用 RunTask 操作时发生错误 (AccessDeniedException):用户:arn:aws:sts::MY_ACCOUNT_ID:assumed-role/my-lambda-role/trigger-ecs-task is notauthorized to perform: ecs:RunTask on resource: arn:aws:ecs:MY_REGION:MY_ACCOUNT_ID:task-definition/an-important-task
如果我将定义切换为an-important-task:LATESTor an-important-task:*,则会出现另一个错误:
...无权执行:ecs:RunTask on resource: *
这很奇怪,因为它看起来与文档说明的相反 - 当我包含一个修订号时,比如an-important-task:5,lambda 会完美地触发。在我的 lambda 函数中,我只是调用了我的 ECS 任务:
def lambda_handler(event, context):
client = boto3.client('ecs')
print("Running task.")
response = client.run_task(
cluster='my-cluster',
launchType='FARGATE',
taskDefinition='an-important-task', # <-- notice no revision number …Run Code Online (Sandbox Code Playgroud) 我刚刚开始使用 SAM 使用 AWS 无服务器并遇到以下问题:
SAM invoke 似乎找不到我的 lambda 处理程序正在导入的 python 模块,但我可以以其他方式导入该模块。
该结构我的项目是:
根目录/
我在 python3.6 虚拟环境中工作,我已经使用安装工具安装了我的 python 包(mymodulename):
python setup.py develop
Run Code Online (Sandbox Code Playgroud)
因此,如果我在虚拟环境中冻结 pip,我会看到:
Pillow==6.0.0
PyPDF2==1.26.0
reportlab==3.5.20
mymodulename==0.5.0
Run Code Online (Sandbox Code Playgroud)
另外如果我去:
cd root-dir/aws/sam/
python
>>> import mymodulename
Run Code Online (Sandbox Code Playgroud)
这成功了。所以它在python路径上。
但是当我在本地调用 sam 时,即:
sam local invoke MyAWSServiceFunction --event ../sam/test/test_event.json
Run Code Online (Sandbox Code Playgroud)
我收到错误消息:
2019-05-02 09:19:17 Found credentials in shared credentials file: ~/.aws/credentials
2019-05-02 09:19:18 Invoking app.lambda_handler (python3.6)
Fetching lambci/lambda:python3.6 Docker container image......
2019-05-02 …Run Code Online (Sandbox Code Playgroud) 快速介绍我的场景:我有一个 VPC,其中包含一个 API 网关,该网关将其调用重定向到我的 Lambda 函数,然后它们访问 RDS 实例和外部 API 调用(互联网访问)。
由于函数需要访问 RDS,我将 RDS 和 Lambdas 放在同一个 VPC 中,在没有公开访问的情况下正确保护 RDS。现在,由于 Lambda 位于 VPC 中,因此它们需要一个 NAT 网关来访问互联网(几乎所有这些功能都需要调用第三方 API),这就是我面临的一个巨大问题。
我有一个小项目为几个用户(从 10 到 200 个用户不等)提供服务,并且使用我创建的无服务器设置,我预计每个月的费用为 3.00 美元到 10.00 美元。这是成本没有一个单一的NAT网关。现在,如果我们加上网关的价格,即每小时 0.045 美元- 我什至没有考虑每 GB 传输的数据 0.045 美元 -每月超过 30 美元。如果我不创建另一个多可用区并减轻可能的可用区故障,我会很愚蠢 - 所以2 个 NAT 网关 > 60.00 美元。
这不仅对我来说不切实际,而且它不会也使通常遵循按需方法的整个无服务器结构的要点无效吗?
我的替代方法之一是将 Lambdas 移出 VPC(意味着没有 VPC)并通过某种机制访问 RDS,而不使其公开访问 - 这也是我失败的地方,如何安全地访问 RDS …
I want to use aws lambda update-function-code command to deploy the code of my function. The problem here is that aws CLI always prints out some information after deployment. That information contains sensitive information, such as environment variables and their values. That is not acceptable as I'm going to use public CI services, and I don't want that info to become available to anyone. At the same time I don't want to solve this by directing everything from AWS command …
aws-lambda ×10
python ×2
terraform ×2
amazon-ecs ×1
amazon-vpc ×1
aws-cli ×1
cron ×1
nat ×1
python-3.x ×1
signing ×1