python-3.x - 使用 Python 3 测试从 EC2 实例到 S3 的连接
问题描述
我正在尝试确定 EC2 实例是否可以访问 S3。目前我正在通过上传来做到这一点:
try:
# Create empty ping file
subprocess.run(['touch', '/tmp/ping'])
# Run upload commands
upload_result = subprocess.run(['aws', 's3', 'cp', '/tmp/ping', 's3://mybucket/ping'])
# Check if it succeeded
upload_result.check_returncode()
except Exception as e:
print('Could not reach S3')
但是,我想知道是否有更有效(非 boto)的方式来做到这一点。EC2 实例没有s3:getObject
权限,只有s3:putObject
预期的权限。但是,如果有一种方法可以通过简单的 HTTPS 请求或类似的方式来建立它,我很想听听。
解决方案
这里有几件事不理想:
- 向 awscli 发起攻击(我会改用 boto3 SDK)
- 调用变异操作 (PutObject) 只是为了测试连接性
您可能会考虑授予此 Lambda 函数对特定标记对象(例如 s3://mybucket/headtest)的读取权限,然后针对它调用HeadObject。
推荐阅读
- java - 检测玩家何时离开弹丸然后移除实体
- ios - iOS确定CBCharacteristic的数据长度
- sql - 分组集中的列不应该是 NULL = SQL Server 错误,或者更有可能是,我不理解分组集吗?
- python - 尝试调用类时出现错误
- powershell - 使用不同的父文件夹 CSV 创建多个子文件夹 - Powershell
- vue.js - vue-test-utils 如何测试组件状态
- sql-server-2016 - SQL Server 不能添加、删除、添加列?
- math - 公式中的数学问题,寻找直接的数学函数
- javascript - 如何访问 onloadedmetadata 提供的对象?
- c++ - 对列表向量调用 clear() 会清除列表中每个索引处的所有节点吗?