小编moo*_*oot的帖子

在两个终端中运行相同的python代码,它们会相互干扰吗?

我有一个python脚本,需要一段时间才能完成执行,具体取决于传递的参数.因此,如果我从两个具有不同参数的终端运行它们,它们是否获得了自己的代码版本?我看不到.pyc生成两个文件.

1号航站楼运行: python prog.py 1000 > out_1000.out

在终端1上运行的脚本终止之前,我开始运行另一个; 因此终端2运行: python prog.py 100 > out_100.out

或者基本上我的问题是他们可以互相干扰吗?

python ubuntu

13
推荐指数
1
解决办法
3802
查看次数

编写Boto3过滤器以使用自定义标记名称的正确方法是什么?

我试图列出不同标签键的标签值上的实例例如>一个标签键 - 环境,其他标签键 - 角色.我的代码如下:

import argparse
import boto3

AWS_ACCESS_KEY_ID = '<Access Key>'
AWS_SECRET_ACCESS_KEY = '<Secret Key>'

def get_ec2_instances(Env,Role):
    ec2 = boto3.client("ec2", region)
    reservations = ec2.describe_instances(Filters={"tag:environment" :   Env, "tag:role" : Role})
    for reservation in reservations["Reservations"] :
        for instance in reservation["Instances"]:
             print  "%s" % (instance.tags['Name'])

if  __name__ == '__main__':

    regions = ['us-east-1','us-west-1','us-west-2','eu-west-1','sa-east-1',
               'ap-southeast-1','ap-southeast-2','ap-northeast-1']
    parser = argparse.ArgumentParser()
    parser.add_argument('Env', default="environment", help='value for   tag:environment');
    parser.add_argument('Role', default="role", help='value for tag:role');
    args = parser.parse_args()

    for region in regions: get_ec2_instances(args.Env, args.Role)
Run Code Online (Sandbox Code Playgroud)

运行此脚本后:python script.py arg1 arg2

我收到了以下错误

Traceback …
Run Code Online (Sandbox Code Playgroud)

python instance amazon-ec2 amazon-web-services boto3

11
推荐指数
3
解决办法
3万
查看次数

我们可以使用boto3 Python在aws s3存储桶之间递归复制文件和文件夹吗?

是否可以使用boto3将一个源存储桶中的所有文件复制到其他目标存储桶.而源存储桶没有常规的文件夹结构.

Source bucket: SRC
Source Path: A/B/C/D/E/F..
where in D folder it has some files,
E folder has some files

Target bucket: TGT
Target path: L/M/N/
Run Code Online (Sandbox Code Playgroud)

我需要使用boto3将SRC存储桶上方的所有文件和文件夹从文件夹C复制到N文件夹下的TGT存储桶.

任何人都可以知道任何API,或者我们是否需要编写新的python脚本来完成此任务.

python amazon-s3 amazon-web-services boto3 aws-lambda

7
推荐指数
1
解决办法
9213
查看次数

botocore.exceptions.NoCredentialsError:无法找到凭据,即使在手动传递凭据后

嗨,我是创建 Flask 应用程序的新手,我创建了一个小 GUI 来将文件上传到 S3 存储桶 这是处理相同内容的代码片段

s3 = boto3.client('s3', region_name="eu-west-1", 
    endpoint_url=S3_LOCATION, aws_access_key_id=S3_KEY, aws_secret_access_key=S3_SECRET)

myclient = boto3.resource('s3')
file = request.files['file[]']
filename=file.filename
data_files = request.files.getlist('file[]')
for data_file in data_files:
    file_contents = data_file.read()
    ts = time.gmtime()
    k=time.strftime("%Y-%m-%dT%H:%M:%S", ts)
    name=filename[0:-4]
    newfilename=(name+k+'.txt')
    myclient.Bucket(S3_BUCKET).put_object(Key=newfilename,Body=file_contents)
    message='File Uploaded Successfully'
    print('upload Successful')
Run Code Online (Sandbox Code Playgroud)

当我从我的本地系统测试它时,该部分工作正常,但在将其上传到 EC2 实例时,该部分

myclient.Bucket(S3_BUCKET).put_object(Key=newfilename,Body=file_contents)
Run Code Online (Sandbox Code Playgroud)

是抛出错误的地方:

botocore.exceptions.NoCredentialsError:无法找到凭据

我创建了一个文件 config.py,我在其中存储所有凭据并在运行时传递它们。不确定是什么导致 EC2 实例出错,请帮我解决

flask boto3

6
推荐指数
1
解决办法
1万
查看次数

如何使用Boto3分页

背景:

列出IAM用户的AWS操作默认返回最大值50.

阅读下面的文档(链接),我运行了以下代码,并通过将"MaxItems"设置为1000来返回完整的设置数据.

paginator = client.get_paginator('list_users')
response_iterator = paginator.paginate(
 PaginationConfig={
     'MaxItems': 1000,
     'PageSize': 123})
for page in response_iterator:
    u = page['Users']
    for user in u:
        print(user['UserName'])
Run Code Online (Sandbox Code Playgroud)

http://boto3.readthedocs.io/en/latest/guide/paginators.html https://boto3.readthedocs.io/en/latest/reference/services/iam.html#IAM.Paginator.ListUsers

题:

例如,如果将"MaxItems"设置为10,那么循环结果的最佳方法是什么?该

我测试了以下但是它只在'IsTruncated'== False之前循环2次迭代并导致"KeyError:'Marker'".不知道为什么会这样,因为我知道有超过200个结果.

marker = None

while True:
    paginator = client.get_paginator('list_users')
    response_iterator = paginator.paginate( 
        PaginationConfig={
            'MaxItems': 10,
            'StartingToken': marker})
    #print(response_iterator)
    for page in response_iterator:
        u = page['Users']
        for user in u:
            print(user['UserName'])
            print(page['IsTruncated'])
            marker = page['Marker']
            print(marker)
        else:
            break
Run Code Online (Sandbox Code Playgroud)

谢谢.

amazon-web-services python-3.x boto3

5
推荐指数
2
解决办法
2万
查看次数

如何在Amazon s3 Bucket中压缩文件并获取其URL

我在Amazon s3存储桶中有一堆文件,我想压缩这些文件并使用Java Spring通过S3 URL下载获取内容.

java spring amazon-s3 amazon-web-services

4
推荐指数
2
解决办法
2万
查看次数

如何用boto3将botocore1.2.6升级到1.4或更高?

我在我的linux机器上安装了boto3.当我通过以下命令时,我将botocore版本设为1.2.6

>>> import boto3
>>> print boto3.__version__
1.2.6
Run Code Online (Sandbox Code Playgroud)

如何升级到boto3到1.4或最新版本中的botocore?如果我需要将botocore 1.4降级到botocore 1.2.6,那么步骤是什么?

python botocore boto3

3
推荐指数
1
解决办法
2万
查看次数

使用 boto3 列出 s3 中启用版本的存储桶

如何列出打开版本控制标志的所有 s3 存储桶名称?

我有 100 个 s3 存储桶。某些存储桶已打开版本控制标志。我想使用 boto3 列出所有这些存储桶名称。

我在下面给出了我的 python 代码片段。

import boto3
REGION = "us-east-1"

s3client = boto3.client('s3',region_name=REGION)
for bucket in s3client.list_buckets()['Buckets']:
  bucket = bucket['Name']
  response = s3client.get_bucket_versioning(Bucket=bucket)
  if 'Status' in response and response['Status'] == 'Enabled':
    print(bucket)
Run Code Online (Sandbox Code Playgroud)

python amazon-s3 amazon-web-services boto3 s3-bucket

3
推荐指数
1
解决办法
2172
查看次数

AWS CLI 中跨区域的加密 RDS 复制失败

我有一个脚本可以跨区域复制未加密和加密的快照。脚本在未加密的快照副本上运行良好,但由于某种原因,加密副本失败并出现错误:-

An error occurred (InvalidParameterValue) when calling the CopyDBSnapshot operation: PreSignedUrl could not be authenticated.
Run Code Online (Sandbox Code Playgroud)

这是我用来复制加密快照的代码

aws rds copy-db-snapshot 
--source-db-snapshot-identifier $source_identifier \
--target-db-snapshot-identifier ${target_identifier} \
--kms-key-id $Enc_Key_ID\ 
--region $target_region 
--source-region $source_region \
--tags Key="owner",Value="RDS Copy Job"
Run Code Online (Sandbox Code Playgroud)

此处传递的所有变量(加密密钥除外)与跨区域的未加密副本一起正常工作。

我想知道出了什么问题。任何帮助和建议对我都有很大帮助。(更新)

aws rds copy-db-snapshot \
--source-db-snapshot-identifier arn:aws:rds:us-west-1:717934610271:snapshot:rds:rds-snapshot??-name-dev-2017-12-22??-08-08 \
--target-db-snapshot-identifier test-rds-snapshotname \
--kms-key-id XXXXXX-XXXXXX-XXXXXX-XXXXXX \
--region us-east-1\
--source-region us-west-1 \
--tags Key="owner",Value="RDS Copy Job" 
Run Code Online (Sandbox Code Playgroud)

以上是用于复制的完整命令。我正在使用 ARN 进行复制

encryption amazon-web-services amazon-rds aws-cli boto3

3
推荐指数
1
解决办法
1619
查看次数

AWS SQS用于从AWS外部接收消息

我的公司有一个消息传递系统,它以JSON格式发送实时消息,它不是在AWS上构建的,也不会与AWS有任何VPN连接.

我们的团队正在尝试使用AWS SQS接收这些消息,然后将DynamoDB处理JSON消息发送到TSV,然后加载到RDS.

但是,根据FAQ,SQS只能从AWS内部接收消息. https://aws.amazon.com/sqs/faqs/

问:谁可以对消息队列执行操作?

只有AWS账户所有者(或账户所有者已委派权限的AWS账户才能对Amazon SQS消息队列执行操作).

为了使用SQS,我能想到的一种方法是创建一个面向公众的EC2实例,它接收消息并传递给SQS.

我的问题是:

  1. 我的想法是否正确?
  2. 如果它是正确的,你可以分享有关如何在这个EC2实例上构建任何应用程序以实现功能的任何细节(我没有应用程序开发的经验,你的见解真的很感激!)
  3. AWS中是否有更容易/更好的选项可以实现在我的用例中接收消息的目标?

messaging message-queue amazon-sqs

2
推荐指数
1
解决办法
3040
查看次数

AWS 安全组显示“UDP 端口打开”,而它应该拒绝?

安全组“显示 UDP 端口已打开”,但应拒绝连接。

我有一个实例 vpn2-a

vpn2-a i-xxxxxxxxx 11.11.11.11
Run Code Online (Sandbox Code Playgroud)

我想限制对该实例的 UDP 端口 1194 的访问,以接受来自以下私有 IP 地址的连接:

    55.55.55.55/32, 66.66.66.66/32
Run Code Online (Sandbox Code Playgroud)

我已创建 SG 并附加到实例 vpn2-a

vpn_1_2-vpn12-security-group
1194    udp 55.55.55.55/32, 66.66.66.66/32
Run Code Online (Sandbox Code Playgroud)

1. 测试是否正常:

我确实从允许的vpn1-a 55.55.55.55执行一些“端口打开”测试

vpn1-a$ $ nc -vv 11.11.11.11 1194 -u
Connection to 11.11.11.11 1194 port [udp/openvpn] succeeded!
Run Code Online (Sandbox Code Playgroud)

太好了,现在让我们看看该端口是否被随机 IP阻止:

RANDOM_HOST$ nc -vv 11.11.11.11 1194 -u
Connection to 11.11.11.11 1194 port [udp/openvpn] succeeded!
Run Code Online (Sandbox Code Playgroud)

^^ 怎么办????估计是被拒绝了!!!请解释一下


2、调试:

这让我很困惑,但我确实做了一些测试:

在 vpn2-a 实例中:

vpn2-a#  /etc/init.d/openvpn stop
Run Code Online (Sandbox Code Playgroud)

如您所见 - 端口 1194 上没有任何内容正在侦听

vpn2-a## netstat …
Run Code Online (Sandbox Code Playgroud)

port udp amazon-web-services aws-security-group

0
推荐指数
1
解决办法
1532
查看次数