如何使用Python和Boto3从S3 Bucket读取Txt文件

如何使用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

如何使用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_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)