【发布时间】:2024-05-04 22:45:02
【问题描述】:
AWS CloudFormation 模板包含一个带有敏感环境变量的 Lambda 函数。我想设置一个 KMS 密钥并用它加密它们
添加基本的 cloudformation 以加密密钥,即使使用 aws/lambda 默认加密也可以
LambdaFunction:
Type: AWS::Lambda::Function
DependsOn: LambdaRole
Properties:
Environment:
Variables:
key: AKIAJ6W7WERITYHYUHJGHN
secret: PGDzQ8277Fg6+SbuTyqxfrtbskjnaslkchkY1
dest: !Ref dstBucket
Code:
ZipFile: |
from __future__ import print_function
import os
import json
import boto3
import time
import string
import urllib
print('Loading function')
ACCESS_KEY_ID = os.environ['key']
ACCESS_SECRET_KEY = os.environ['secret']
#s3_bucket = boto3.resource('s3',aws_access_key_id=ACCESS_KEY_ID,aws_secret_access_key=ACCESS_SECRET_KEY)
s3 = boto3.client('s3',aws_access_key_id=ACCESS_KEY_ID,aws_secret_access_key=ACCESS_SECRET_KEY)
#s3 = boto3.client('s3')
def handler(event, context):
source_bucket = event['Records'][0]['s3']['bucket']['name']
key = event['Records'][0]['s3']['object']['key']
#key = urllib.unquote_plus(event['Records'][0]['s3']['object']['key'])
#target_bucket = "${dstBucket}"
target_bucket = os.environ['dest']
copy_source = {'Bucket':source_bucket, 'Key':key}
try:
s3.copy_object(Bucket=target_bucket, Key=key, CopySource=copy_source)
except Exception as e:
print(e)
print('Error getting object {} from bucket {}. Make sure they exist '
'and your bucket is in the same region as this '
'function.'.format(key, source_bucket))
raise e
AWS CloudFormation 模板包含一个带有敏感环境变量的 Lambda 函数。我想设置一个 KMS 密钥并用它加密它们
【问题讨论】:
-
您使用的是 AWS 访问密钥和密钥吗?您应该考虑使用 lambda 执行角色。
-
我正在从另一个 AWS 账户复制数据,因此我需要提供 ACCESS 密钥
-
您应该使用更安全且最佳做法的跨账户角色
标签: aws-lambda amazon-cloudformation