我想用我用Python编写的lambda函数将文件写入S3.但我很难通过我的S3 ID和密钥.
在我将本地Python环境变量AWS_SHARED_CREDENTIALS_FILE和AWS_CONFIG_FILE设置为指向我使用AWS CLI创建的本地文件之后,以下内容适用于我的本地计算机.
session = boto3.session.Session(region_name='us-east-2')
s3 = session.client('s3',
config=boto3.session.Config(signature_version='s3v4'))
Run Code Online (Sandbox Code Playgroud)
以下是关于Lambda的工作,我手工编写我的ID和密钥(在这里使用***):
AWS_ACCESS_KEY_ID = '***'
AWS_SECRET_ACCESS_KEY = '***'
session = boto3.session.Session(region_name='us-east-2')
s3 = session.client('s3',
config=boto3.session.Config(signature_version='s3v4'),
aws_access_key_id=AWS_ACCESS_KEY_ID,
aws_secret_access_key=AWS_SECRET_ACCESS_KEY)
Run Code Online (Sandbox Code Playgroud)
但是我知道在阅读亚马逊的最佳实践后,这是不安全的.所以我尝试:
AWS_ACCESS_KEY_ID = os.environ['AWS_ACCESS_KEY_ID']
AWS_SECRET_ACCESS_KEY = os.environ['AWS_SECRET_ACCESS_KEY']
session = boto3.session.Session(region_name='us-east-2')
s3 = session.client('s3',
config=boto3.session.Config(signature_version='s3v4'),
aws_access_key_id=AWS_ACCESS_KEY_ID,
aws_secret_access_key=AWS_SECRET_ACCESS_KEY)
Run Code Online (Sandbox Code Playgroud)
但是我收到一个错误:"您提供的AWS Access密钥ID在我们的记录中不存在."我还尝试在Lambda控制台中定义这些变量,但我得到:"Lambda无法配置您的环境变量,因为您提供的环境变量包含保留键."
我有点惊讶我需要传递ID或密钥,因为我认为我创建Lambda函数的帐户也有权写入S3帐户(密钥和秘密我手工代码来自IAM同一帐户) .通过阅读以下帖子我有同感: AWS Lambda函数写入S3
我有一个问题,其中一些numpy数组不使用cv.fromarray()转换为cvMat.只要numpy数组被转置,就会出现问题.
import numpy as np
import cv
# This works fine:
b = np.arange(6).reshape(2,3).astype('float32')
B = cv.fromarray(b)
print(cv.GetSize(B))
# But this produces an error:
a = np.arange(6).reshape(3,2).astype('float32')
b = a.T
B = cv.fromarray(b)
print(cv.GetSize(B))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "test_err.py", line 17, in <module>
B = cv.fromarray(b)
TypeError: cv.fromarray array can only accept arrays with contiguous data
Run Code Online (Sandbox Code Playgroud)
有什么建议?我的许多阵列都在某些时候进行了转换,因此错误频繁出现.
我在MacOS X Lion上使用Python2.7,从MacPorts安装了NumPy 1.6.2和OpenCV 2.4.2.1.