我目前正在研究 DynamoDB 的按需设置。我们偶尔会在高流量高峰期间看到一些限制,它跨越所有索引,因此不特定于某个分区。所有与按需容量模式相关的 DynamoDB 文档似乎都表明,一旦设置了新的峰值使用量,它基本上就无限期地达到峰值。我的假设是否正确,还是在一段时间后它会重置/缩小?是否有任何地方记录了按需容量模式的发电机扩展的内部结构?
我想通过配置任意高容量并切换回按需容量模式来预热我的低容量表,只是想最终发现该策略会随着时间的推移而持续下去吗?
这是出现主要错误的代码
与我的本地 IP 的绑定将起作用:
s.bind(("192.168.1.4", port))
Run Code Online (Sandbox Code Playgroud)
与我的公共 IP 的绑定失败并出现以下错误
s.bind(("99.99.99.99", port))
Run Code Online (Sandbox Code Playgroud)
[WinError 10049] 请求的地址在其上下文中无效
以下是有关我的代码的更多上下文:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
port = 6767
try:
s.bind(("192.168.1.4", port)) # will work fine as local ip is used but
# when used public ip the error is thrown
except socket.error as e:
print(str(e)+"aa")
s.listen(2)
Run Code Online (Sandbox Code Playgroud) 由于SQS是分布式队列,那么它是在同一区域还是不同区域复制消息呢?查看AWS 文档中的架构,它显示正在复制消息,但它是在同一区域还是不同区域复制?
使用案例:
我正在区域中设置队列X,但可能会在世界另一端的区域中访问它。因此,如果有两个工作线程,一个在 Region 中运行X,一个在 Region 中运行,那么Y两者是否都从同一个 Region 队列获取数据,或者 Region和 RegionX是否从靠近它们的 Region 获取数据。XY
就像X从区域获取消息X一样,在该信息到达区域更新队列之前Y,另一个工作人员从复制的区域Y队列中获取并读取相同的消息。
PS:- 我至少知道一次 SQS 的语义。但我想知道上述用例中的语义。
我正在创建 EC2 实例并希望传递用户数据以附加文件系统,但我不知道如何将文件系统 ID 作为变量传递。
文件系统 ID 将使用 API 网关传递。我尝试过以下操作,但用户数据$aa不包含aa值。
aa='fs-ce99bd38'
user_data = """#!bin/bash
sudo yum -y install nfs-utils
sudo mount -t efs -o tls $aa:/ efs
"""
client = boto3.client('ec2', region_name=REGION)
def lambda_handler(event, context):
instance = client.run_instances(
ImageId=AMI,
InstanceType=INSTANCE_TYPE,
KeyName=KEY_NAME,
UserData=user_data,
MaxCount=min_max_add,
MinCount=min_max_add
)
Run Code Online (Sandbox Code Playgroud) 假设我们有一个在私有子网中运行的 ec2 实例。没有与此实例关联的公共 IP。该实例内有一个正在运行的应用程序(带有端点的服务器)。
问题是我需要通过 Lambda 函数访问此应用程序端点。如果该实例具有公共 IP,我们可以直接调用该实例,但该实例是私有实例。
有什么方法可以通过 Lambda 函数与该私有 EC2 实例进行通信吗?
我希望拥有一个可供 AWS 账户中具有不同角色的所有 lambda 访问的秘密。一种选择是附加一个允许所有 lambda 访问机密的策略,但考虑到我们有大量 lambda,我想知道是否可以使用机密管理器中的资源权限执行相反的操作。
我已将以下策略附加到该秘密中。
{
"Version" : "2012-10-17",
"Statement" : [ {
"Effect" : "Allow",
"Principal" : {
"Service" : "lambda.amazonaws.com"
},
"Action" : "secretsmanager:GetSecretValue",
"Resource" : "arn:aws:secretsmanager:us-east-1:{AWS_ACCOUNT_ID}:secret:dummy-secret-46DfjO",
"Condition" : {
"StringEquals" : {
"aws:sourceAccount" : "{AWS_ACCOUNT_ID}"
}
}
} ]
}
Run Code Online (Sandbox Code Playgroud)
我希望以下策略允许读取 AWS_ACCOUT_ID 中的所有 lambda,但我仍然收到以下错误:
错误 | 尝试从 Secrets Manager 读取 API 密钥时出错:Secrets Manager 读取错误:AccessDeniedException:用户:arn:aws:sts::AWS_ACCOUNT_ID:assumed-role/dummy-role-name 无权执行:secretsmanager:GetSecretValue 对资源: arn:aws:secretsmanager:us-east-1:AWS_ACCOUNT_ID:secret:dummy-secret-46DfjO 因为没有基于身份的策略允许 Secretsmanager:GetSecretValue 操作
我在这里缺少什么?
这个问题已经多次讨论过,但我仍然对此感到困惑.以下代码段说明了此问题:
a = np.arange(10)
m = a
m[0] = 1000
m
Out[106]: array([1000, 1, 2, 3, 4, 5, 6, 7, 8,
9])
a
Out[107]: array([1000, 1, 2, 3, 4, 5, 6, 7, 8, 9])
Run Code Online (Sandbox Code Playgroud)
现在让我们做
a = np.arange(10)
m = a
m = m + 1000
m
Out[102]: array([100, 101, 102, 103, 104, 105, 106, 107, 108, 109])
a
Out[103]: array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
Run Code Online (Sandbox Code Playgroud)
我想完全理解在计算m = m + 1000时变量a没有被修改的原因.我不明白这里的逻辑....
我正在使用该boto3库将对象放入 Amazon S3 中。我想在我的服务器上创建一个 python 服务,该服务连接到 AWS 中的存储桶,每当我向它发送文件路径时,它都会将其放入存储桶中:
s3_resource = boto3.resource(
's3',
endpoint_url='...',
aws_access_key_id='...',
aws_secret_access_key='...'
)
bucket = s3_resource.Bucket('name')
Run Code Online (Sandbox Code Playgroud)
为了上传,我将请求发送到此方法:
def upload(path):
bucket.put_object(...)
Run Code Online (Sandbox Code Playgroud)
与存储桶的连接应该是持久的,这样每当我调用upload方法时,它都会快速将对象放入存储桶中,而不需要每次都连接到存储桶。
如何在我的 上启用长期连接s3_resource?
如果项目(状态)不存在,我将调用此函数来放置项目,这是我从这里引用的内容:How do I Conditionally insert an item into a dynamodb table using boto3 ..
def put_items_if_doesnt_exist():
dynamodb = boto3.resource('dynamodb',region_name='us-east-1')
try:
table = dynamodb.Table('awssolutions-ssm-hybrid-table')
response = table.put_item(
Item={
'name':'Execution',
'state': 'Locked',
},
ConditionExpression='attribute_not_exists(state) AND attribute_not_exists(name)'
)
except ClientError as e:
# Ignore the ConditionalCheckFailedException
if e.response['Error']['Code'] != 'ConditionalCheckFailedException':
raise
Run Code Online (Sandbox Code Playgroud)
这里的问题是状态是保留字,因此它失败并出现错误:
[ERROR] ClientError: An error occurred (ValidationException) when calling the PutItem operation: Invalid ConditionExpression: Attribute name is a reserved keyword; reserved keyword: state
Run Code Online (Sandbox Code Playgroud)
有什么建议来处理这个问题吗?
python amazon-web-services amazon-dynamodb boto3 dynamodb-queries
python ×4
aws-lambda ×3
boto3 ×3
amazon-ec2 ×1
amazon-s3 ×1
amazon-sqs ×1
amazon-vpc ×1
copy ×1
database ×1
devops ×1
nosql ×1
numpy ×1
python-3.x ×1
sockets ×1
user-data ×1