如何使用Python和Boto3从S3 Bucket读取Txt文件
如何使用Python和Boto3从S3 Bucket读取Txt文件 我正在使用下面的脚本,它工作得非常好,我能够看到S3 bucket中的实例名如何使用Python和Boto3从S3 Bucket读取Txt文件,python,python-3.x,amazon-web-services,boto3,boto,Python,Python 3.x,Amazon Web Services,Boto3,Boto,如何使用Python和Boto3从S3 Bucket读取Txt文件 我正在使用下面的脚本,它工作得非常好,我能够看到S3 bucket中的实例名 import boto3 import codecs access_key = "XXXXXXXXXXXX" secret_key = "XXXXXXXXXXXXXXXxxxxx" ec2 = boto3.client('ec2', aws_access_key_id=access_key, aws_secre
import boto3
import codecs
access_key = "XXXXXXXXXXXX"
secret_key = "XXXXXXXXXXXXXXXxxxxx"
ec2 = boto3.client('ec2', aws_access_key_id=access_key, aws_secret_access_key=secret_key, region_name='us-east-1')
s3 = boto3.resource('s3', aws_access_key_id=access_key, aws_secret_access_key=secret_key, region_name='us-east-1')
bucket = 'stoppedinstanceidslist'
key = 'StoppedInstanceidsList.txt'
obj = s3.Object(bucket, key)
InstancetobeStart = (obj.get()['Body'].read().decode('utf-8'))
ids=InstancetobeStart
print(type(ids)) # <class 'str'>
print(ids) # ['i-041fb789f1554b7d5', 'i-0d0c876682eef71ae']
response =ec2.start_instances(InstanceIds=ids)
print("Your Instances are Started now which are stopped last day")
导入boto3
导入编解码器
访问\u key=“XXXXXXXXXX”
机密密钥=“XXXXXXXXXXXXXXXXX XXXXX”
ec2=boto3.client('ec2',aws\u access\u key\u id=access\u key,aws\u secret\u access\u key=secret\u key,region\u name='us-east-1')
s3=boto3.resource('s3',aws\u access\u key\u id=access\u key,aws\u secret\u access\u key=secret\u key,region\u name='us-east-1')
bucket='stoppedInstanceDSList'
key='stoppedInstanceDSList.txt'
obj=s3.对象(bucket,key)
InstancetobeStart=(obj.get()['Body'].read().decode('utf-8'))
ids=InstancetobeStart
打印(类型(ID))#
打印(ID)——[i-041fb789f1554b7d5','i-0d0c876682eef71ae']
response=ec2.start\u实例(instanceId=id)
打印(“您的实例现在已启动,并在最后一天停止”)
使用response后,我得到以下错误
raise ParamValidationError(report=report.generate_report())
botocore.exceptions.ParamValidationError: Parameter validation failed:
Invalid type for parameter InstanceIds, value: ['i-041fb789f1554b7d5', 'i-0d0c876682eef71ae'], type: <class 'str'>, valid types: <class 'list'>, <class 'tuple'>
<class 'str'>
['i-041fb789f1554b7d5', 'i-0d0c876682eef71ae']
raiseparamValidationError(report=report.generate_report())
botocore.exceptions.ParamValidationError:参数验证失败:
参数InstanceId的类型无效,值:['i-041fb789f1554b7d5','i-0d0c876682eef71ae',类型:,有效类型:,
['i-041fb789f1554b7d5','i-0d0c876682eef71ae']
如果我的程序在从s3存储桶读取后停止实例,该怎么办?您的
ids
是文本字符串['i-041fb789f1554b7d5','i-0d0c876682eef71ae']
。要解析并转换为列表,请使用模块:
这回答了你的问题吗?不,实际上这里我是从S3 bucket文件中读取的,不是从descripe实例中读取的,我已经在S3中有一个实例列表
import ast
# ...
InstancetobeStart = (obj.get()['Body'].read().decode('utf-8'))
ids = ast.literal_eval(InstancetobeStart)