获取文件夹中S3的对象URL
使用python或aws cli获取S3存储夹中所有文件的对象URL. S3对象URL是格式 https://BUCKET_NAME.s3.amazonaws.com/FOLDER_1/FILE_NAME 解决方案 您可以使用脚本 在S3文件夹中生成所有文件的对象URL import boto3 s3_uri="s3://BUCKET_NAME/FOLDER_1/FOLDER2/" # S3 URI of the folder you want to recursively scan, Replace this with your own S3 URI # Split the s3 uri to extract bucket name and the file prefix # Splitting S3 URI will generate an array # Combine the appropirate elements of the array to extra
32 2024-04-03
编程技术问答社区
如何使用AWS CLI或Python列出AWS S3存储桶中的 *最近 *文件
我有一台相机,每小时都会在AWS S3存储桶中添加新文件,除非没有.对于快速故障射击,我希望能够找到S3文件夹中的最新文件(列表或查看).或列出特定日期/时间以来所有文件. FWIW,文件名是由Unix Epoch日期邮票组成的,因此我可以寻找包含大于161315000的数字的文件名. 到目前为止,我拥有的唯一解决方案是将所有文件列表,并将其管道输送到文本文件,然后我可以解析.这需要太长...我有数万个文件. 我很乐意使用AWS CLI,S3CMD,Boto ... 解决方案 而不是使用文件名("键"),您可以简单地使用LastModified日期在创建对象时自动连接的LastModified . 要根据此日期列出最重点的对象,您可以使用: aws s3api list-objects --bucket my-bucket --query 'sort_by(Contents, &LastModified)[-1].Key' --output text
20 2024-04-03
编程技术问答社区
boto3缓存会话令牌不起作用
我的环境中有一些东西,或者这种功能被打破了.看来它根据博客我遵循: 我想做的是运行脚本,输入MFA.然后能够在不输入MFA使用缓存的会话令牌的情况下再次运行它. 我看过的样本是: session = boto3.Session(profile_name='w2-cf3') ec2_client = session.client('ec2',region_name='us-west-2') 然后,我提示我的MFA: Enter MFA code: 我输入它,并且我的代码运行.在这一点上,我的会话令牌应该被缓存,这就是它在AWSCLI中的工作方式.但是,在第二次运行中,boto3无需在我的缓存会话中阅读,而是忽略了我的MFA,并再次提示我: Enter MFA code: 这是我的〜/.aws/配置文件的样子: [profile default] region = us-west-2 output = json [profile w2-cf3
12 2024-04-03
编程技术问答社区
从CLI或SDK获取AWS IAM策略访问顾问记录
我正在审查最近n天尚未使用的IAM政策和角色. 在控制台中,我可以轻松查看Access Advisor下的最新用法. 我想以自动化的方式获得相同的功能,但是我找不到有关使用CLI或SDK获取此文件的任何文档. 这是可能的吗? 解决方案 现在可用,检查下面的链接 https://aws.amazon.com/大约是aws/whats-new/2018/12/iam_access_advisor_apis/ 其他解决方案 Netflix具有称为Aardvark的工具,可以从控制台刮擦访问顾问数据.您可能想看看. 其他解决方案 据我所知,不.您可能会很幸运能找到一种方法来使用硒来自动化这一过程,但这是一个漫长的解决方法. 也没有使用CloudTrail的运气.我可以找到的最接近的是策略最后更新时. 希望亚马逊会考虑到这一点.我已经与他们联系了.
18 2024-04-03
编程技术问答社区
设置路径以便AWS cli正常工作
我通过以下方式安装了AWSCLI: pip install --upgrade --user awscli 现在,如果我在cmd中键入AWS配置,则我得到的:'aws'不被识别为内部或外部命令... 我很确定需要正确设置路径.我知道如何进入环境变量设置路径,但是我不知道该设置路径是什么,因为我看不到awscli安装在哪里.顺便说一句,我已经安装了boto3,并且可以导入它. 我还应该提到我正在Windows中设置此设置. 解决方案 嗨,我遇到了同样的问题,我设法解决了这个问题! 我正在使用Python 3.7.0和PIP版本18. 我使用 安装了AWSCLI pip install --upgrade --user awscli ,但没有在路径中添加,我不知道如何找到它.但是当我决定删除它时,运行 pip uninstall awscli 它告诉我 Uninstalling awscli-1.15.65: Would re
8 2024-04-03
编程技术问答社区
亚马逊EKS:通过python脚本生成/更新kubeconfig
使用Amazon's K8S产品时, eks 服务,在某个时候,您需要将Kubernetes API和配置连接到AWS内建立的基础架构.特别是我们需要具有适当凭据和URL的 kubeconfig 才能连接到EKS提供的K8S控制平面. Amazon Commandline工具aws提供了此任务的例程 aws eks update-kubeconfig --kubeconfig /path/to/kubecfg.yaml --name 问题:通过Python/Boto3 进行相同的操作 查看 boto api api Document ,我似乎无法发现上述aws例程的等效物.也许我在看错误的地方. boto中是否有现成的功能实现这一目标? 否则,您将如何直接在Python中进行此操作(除了在子过程中呼唤aws)? 解决方案 没有方法函数可以执行此操作,但是您可以自己构建配置文件: # Set up the cl
26 2024-04-03
编程技术问答社区
用于Boto3的PyCharm智能感应器
在Pycharm中看到完整的IntelliSense(代码完成)选项时遇到问题. 在Windows上使用Python 3.4. 建议部分工作: import boto3 s = boto3.Session() (boto3. will bring up list of methods/params of object boto3) ec2 = s.resource('ec2') (resource is a suggested method!) ec2.
14 2024-04-03
编程技术问答社区
是否有办法从实例中获得平台和操作系统?
我正在尝试从AWS EC2实例中获取一些信息.我想知道是否有一种方法来吸引以下信息: | Platform | Version | |-----------|---------------:| | CentOS | 6.0 or 7.0 | | Ubuntu | 10.04 or 12.04 | | Windows | | 我想知道使用SDK是否可以.我尝试了Python SDK boto3,但没有结果. 解决方案 除非您将这些信息存储为tags,否则SDK或CLI不可能. AWS SDK和CLI可以帮助您获取在管理程序级别上可用的信息.但是您要问的内容在VM内而不是在Hyprovisor中. 虽然以下CLI命令可以为您提供一些帮助,但是不能保证您将在所有情况下获得平台信息. aws ec2 describe-instances --query 'Reservations[*].Insta
8 2024-04-03
编程技术问答社区
s3-如何快速获得文件的行数? wc -l太慢了
是否有人可以快速获取S3中托管的文件的线计数?最好使用CLI,S3API,但我也向Python/Boto开放. 注意:解决方案必须非相互交往,即在一夜之间. 对不,我正在这样做,它有效,但要花费大约10分钟的20GB文件: aws cp s3://foo/bar - | wc -l 解决方案 这是可能对您有用的两种方法... Amazon S3具有一个新功能,称为您可以执行文件中记录数(行)数量(行),甚至可以在GZIP文件上使用.结果可能会根据您的文件格式而有所不同. 亚马逊雅典娜也是可能合适的类似选择.它可以查询存储在Amazon S3中的文件. 其他解决方案 是的,Amazon S3具有选择功能,还要关注成本,同时从SELECT选项卡执行任何查询. 例如,这是2018年6月的价格(可能会有所不同) S3 SELECT定价基于输入,输出和传输数据的大小. 每个查询每GB扫描的价格为0.002美元,加上每GB返回0.0007 USD. 其他
14 2024-04-03
编程技术问答社区
s3cmd、boto和AWS CLI之间的区别
我正在考虑将静态网站重新部署到Amazon S3.我需要自动化部署,因此我正在寻找此类任务的API.我对不同选项有些困惑. 问题:S3CMD,Python库Boto和AWS CLI有什么区别? ? 解决方案 s3cmd 和 aws cli 都是命令行工具.如果您想通过外壳脚本(例如bash)脚本脚本部署,它们非常适合. aws cli通过" S3"命令为您提供简单的文件复制能力,该命令足以将静态网站部署到S3存储桶中.它还具有一些很小的优势,例如在Amazon Linux上预先安装,如果您从那里工作的地方(也是易于通过pip 轻松安装). 一个AWS CLI命令可能适合将本地目录同步到S3桶: $ aws s3 sync . s3://mybucket 此命令的完整文档: http://docs.aws.aws.aws.amazon.com/cli/latest/reference/s3/sync.html 编辑:正如 @Simon-Buchan在
16 2024-04-03
编程技术问答社区
docker exec cli peer channel create | failed to create new connection: context deadline exceeded | amazon managed blockchain
我正在尝试使用Amazon托管区块链进行本指南.在步骤6中,要创建频道,我已执行以下命令, docker exec cli peer channel create -c hrschannel -f /opt/home/hrschannel.pb -o orderer.n-zzzz.managedblockchain.us-east-1.amazonaws.com:30001 --cafile /opt/home/managedblockchain-tls-chain.pem --tls 但是我遇到以下错误, Error: failed to create deliver client: orderer client failed to connect to orderer.n-zzzz.managedblockchain.us-east-1.amazonaws.com:30001: failed to create new connection: context dead
搜索AWS CLI输出并保存到变量
我是批处理文件的新手,但是我正在尝试使用一个来自动化一些AWS CLI实例创建. 到目前为止,我所拥有的非常简单 - 我的.bat文件中有一个命令,该命令将运行run-instances命令: aws ec2 run-instances --dry-run --image-id %ami_id% --key-name %keypair% --security-group-ids %security_group% --instance-type "r3.large" --subnet-id %az1b_subnet% 此命令需要一些时间才能运行,但最终将(没有--dry-run)返回JSON关于创建的实例(S).我想搜索JSON输出并将instance-id保存到一个变量,以便我可以使用它标记我的新创建的实例,并使用ec2 create-tags命令. 关于我如何做的任何想法?我的第一个尝试是将> test.txt添加到上述命令的末尾,然后搜索JSON并设置变量.但是
10 2024-03-29
编程技术问答社区
AWS Elastic Beanstalk : 命令eb列表显示没有环境
我正在使用Elastic Beanstalk,并且创建了3种不同的环境.我用了awsebcli.突然之间,命令eb list并没有向我展示我的环境,因为我无法部署环境.我遇到的错误是ERROR: This branch does not have a default environment. You must either specify an environment by typing "eb status my-env-name" or set a default environment by typing "eb use my-env-name". 我尝试了eb status 'my-env-name',我再次遇到了一个错误:ERROR: The environment name 'my-env-name' could not be found.简而言之:我无法使用任何eb命令. 解决方案 消息本身很清楚.您尚未为正在研究的分支设置环境. 您可以切换到分支的配置,但这
20 2024-03-28
编程技术问答社区
安装AWS CLI工具的Bash脚本
我正在编写一个BASH脚本,该脚本将自动安装和配置AWS CLI工具.我能够安装AWS CLI工具,但无法配置它. 我的脚本是这样的: #!/bin/bash wget https://s3.amazonaws.com/aws-cli/awscli-bundle.zip unzip awscli-bundle.zip sudo ./awscli-bundle/install -i /usr/local/aws -b /usr/local/bin/aws ./awscli-bundle/install -b ~/bin/aws ./awscli-bundle/install -h aws configure AWS Access Key ID [None]: ABCDEFGHIJKLMNOP ## unable to provide this data AWS Secret Access Key [None]: xbdwsdADDS/ssfsfa/afzfASADQA
22 2024-03-28
编程技术问答社区
AWS SQS没有收到SNS消息
我创建了一个SNS主题,该主题发布了通过CLI出现的所有信息.但是,当我检查队列时,它没有收到任何SNS消息.我通过将电子邮件订阅到它来验证了SNS的工作,因此问题似乎是在队列和SNS之间的联系.但是,我的语法找不到任何问题.据我所知,我正好遵循了亚马逊的文档. bash: #SNS parameters SNS_NAME="${NAME}_SNS" SQS_NAME="${NAME}_SQS" #Create SNS topic to send cloudformation notifications to SNS_ARN=`aws sns create-topic --name ${SNS_NAME} | jq -r '.TopicArn'` #Create SQS to send SNS to (holding SNS messages for lambda -^ up) SQS_URL=`aws sqs create-queue --queue-name ${SQ
24 2024-03-28
编程技术问答社区
aws cli的输出被自动发送至vi
我正在学习AWS CLI(V2),并已将其安装在Ubuntu 18.04上.我正在使用安装OH-MY-ZSH运行ZSH.我正在尝试将AWS命令输出作为JSON字符串报告回到终端(甚至是文本),但是输出是始终重定向到VI. . 我的AWS帐户是全新的 - 没有EC2实例.当我运行以下命令时: aws ec2 describe-instances 它发送了预期的输出值(例如{"预留":[]}),但直接发送到VI,而不是将JSON字符串输出到终端,然后需要关闭VI.无论输出格式如何(JSON,文本,表)或我使用的外壳(bash,zsh). 我不确定这是AWS CLI配置问题/更改还是Shell/Linux配置问题/更改 我已经查看了我的.zshrc,.bashrc,.bash_profile和.bash_aliases文件,并且在这里没有看到任何明显的解决方案会更改或重定向输出. 我一直在搜寻AWS CLI文档,堆栈Overflow和Google,但我还没有找到解决
12 2024-03-28
编程技术问答社区
如何临时切换AWS CLI的配置文件?
更新答案(7/10/2021):对于AWS CLI V1,请执行此操作: export AWS_DEFAULT_PROFILE=user2 对于AWS CLI V2,以下可行: export AWS_PROFILE=user2 全部问题在下面: (1.)成功配置了AWS CLI的第二个配置文件后,我未能成功地将配置文件设置为我的bash会话中的user2,并使用以下命令: export AWS_PROFILE=user2 ...根据建议: https:https:https:https:https://docs.aws.amazon.com/cli/latest/userguide/cli-multiple-profiles.html (2.)以下命令工作: aws s3 ls --profile user2 所以我知道AWS CLI和USER2配置文件都在我的计算机上工作. (3.)但是,当我随后(即输入"导出aws_profi
10 2024-03-28
编程技术问答社区
使用AWS CLI的Bash-无法定位凭证
我有一个外壳脚本,该脚本应该从S3下载一些文件并安装EBS驱动器.但是,我总是以"无法找到凭据". 我已经用aws configure命令指定了我的凭据,命令在shell脚本之外工作.请有人告诉我(最好是详细)如何使它起作用? 这是我的脚本 #!/bin/bash AWS_CONFIG_FILE="~/.aws/config" echo $1 sudo mkfs -t ext4 $1 sudo mkdir /s3-backup-test sudo chmod -R ugo+rw /s3-backup-test sudo mount $1 /s3-backup-test sudo aws s3 sync s3://backup-test-s3 /s3-backup/test du -h /s3-backup-test ipt (short version): 感谢您的帮助! 解决方案 sudo将将$HOME目录(以及因此~)更改为/root,并从环境
16 2024-03-28
编程技术问答社区
如何使用AWS S3 CLI在BASH中把文件转储到stdout?
我正在启动一个bash脚本,该脚本将在S3中采用路径(如 ls 命令),并将所有文件对象的内容都转储到stdout中.本质上,我想复制cat /path/to/files/*,例如S3,例如s3cat '/bucket/path/to/files/*'.我的第一个倾斜度查看选项是将cp命令使用到临时文件,然后cat. 有人尝试过或类似的人,还是已经有一个命令,我找不到是什么? 解决方案 将所有文件对象的内容都转到Stdout. ,如果您通过-的aws s3 cp命令的目的地,则可以完成此操作. 例如,$ aws s3 cp s3://mybucket/stream.txt -. 您想做的是这样的? :: #!/bin/bash BUCKET=YOUR-BUCKET-NAME for key in `aws s3api list-objects --bucket $BUCKET --prefix bucket/path/to/files/ | jq -
10 2024-03-28
编程技术问答社区