aws cli有一个--query选项,允许您只选择一些信息.
举个例子,我有兴趣从ec2 describe-instances中获取安全组名称.
如果我跑:
aws ec2 describe-instances --output text --query 'Reservations[*].Instances[*].[InstanceId,InstanceType,SecurityGroups]
Run Code Online (Sandbox Code Playgroud)
我的输出看起来像:
i-xxxxxxx m1.type [{u'GroupName': 'groupName', u'GroupId': 'sg-xxxxx'}]
Run Code Online (Sandbox Code Playgroud)
我还可以使用索引访问列表的元素:
aws ec2 describe-instances --output text --query 'Reservations[*].Instances[*].[InstanceId,InstanceType,Tags[0].Value,Tags[0].Name]
Run Code Online (Sandbox Code Playgroud)
是否可以查询标签,以便代替Tag [0]我搜索指定名称的标签?
交互式地,我可以使用"aws configure"来更改或查看默认区域.是否有"pwd"之类的功能,记录与否,允许我在脚本中确定或确认当前区域?即使没有定义AWS_DEFAULT_REGION?我想要一个脚本在许多配置文件下运行.我可以从aws配置列表中删除,但是有什么更整洁的东西吗?
我想用新内容更新S3存储桶(在存储桶中创建一个文件夹).什么是--expires日期格式.我没有AWS CLI在谷歌上找到任何使用的例子.有人可以帮我解决这个问题吗?
像这样的东西:
aws s3 sync $backup_home s3://backup/$app-backup/$app-$DATE --expires '$DATE'
Run Code Online (Sandbox Code Playgroud) 看起来很简单,但没有正确的语法.我想知道我的s3存储桶中是否存在使用通配符的文件.就像是
aws s3 ls s3://my-bucket/folder/*myfile*
Run Code Online (Sandbox Code Playgroud)
目标是查看此存储桶中是否存在被调用2016_myfile.txt的文件或调用的文件2011_myfile.csv.
如果我运行该命令,即使我知道该文件存在,它也不会返回任何内容.
我想限制对 S3 存储桶中单个文件夹的访问,并且我已经为其编写了 IAM。但是我仍然无法将文件上传/同步到此文件夹。这里bucket是存储桶名称,folder也是我想要授予访问权限的文件夹。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowUserToSeeBucketListInTheConsole",
"Action": [
"s3:ListAllMyBuckets",
"s3:GetBucketLocation"
],
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::*"
]
},
{
"Sid": "AllowRootAndHomeListingOfBucket",
"Action": [
"s3:ListBucket"
],
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::bucket"
],
"Condition": {
"StringEquals": {
"s3:prefix": [
""
],
"s3:delimiter": [
"/"
]
}
}
},
{
"Sid": "AllowListingOfUserFolder",
"Action": [
"s3:ListBucket",
"s3:PutObject",
"s3:PutObjectAcl",
"s3:GetObject",
"s3:GetObjectAcl",
"s3:HeadObject"
],
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::bucket"
],
"Condition": {
"StringLike": {
"s3:prefix": [ …Run Code Online (Sandbox Code Playgroud) 我们在ELB后面运行一个ECS集群(ALB,具体而言).
我有一个流程允许我通过查询ALB并通过目标组追溯结果然后实例来找出哪个ECS群集与ALB相关联:
这是bash脚本:
ELB_NAME=$(aws route53 list-resource-record-sets --hosted-zone-id <Zone-ID> | jq -r --arg URL "$URL"'.ResourceRecordSets[]|select(.Name==$URL)|.AliasTarget.DNSName')
ELB_NAME=$(echo $ELB_NAME | cut -f 2- -d "." | rev | cut -f 2- -d "." | rev)
ELB_ARN=$(aws elbv2 describe-load-balancers | jq -r --arg ELB_NAME "$ELB_NAME" '.LoadBalancers[]|select((.DNSName|ascii_downcase)==$ELB_NAME)|.LoadBalancerArn')
TG_ARNS=$(aws elbv2 describe-target-groups | jq -r --arg ELB_ARN "$ELB_ARN" '.TargetGroups[]|select(.LoadBalancerArns[]==$ELB_ARN)|.TG_ARN=$(echo $TG_ARNS | cut -f 1 -d " ")
INSTANCE_ID=$(aws elbv2 describe-target-health --target-group-arn $TG_ARN | jq -r '.TargetHealthDescriptions[].Target.Id' | head -n 1)
CLUSTER=$(aws ec2 describe-instances --instance-ids $INSTANCE_ID | jq …Run Code Online (Sandbox Code Playgroud) sudo apt install awscli安装当前版本 1.16.113-1
官方网站(https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2-linux.html)支持aarch64但不支持 armhf。还有其他方法或我缺少的东西吗?v1 和 v2 之间的差异不是很大,但例如 v1 不支持--storage-class DEEP_ARCHIVE
amazon-s3 amazon-web-services raspberry-pi amazon-glacier aws-cli
是否可以使用AWS CLI在AWS账户之间复制S3存储桶的内容?我知道可以在同一个帐户中的存储桶之间复制/同步,但我需要将旧AWS账户的内容转换为新账户.我在AWS CLI中配置了两个配置文件,但我没有看到如何在单个copy/sync命令中使用这两个配置文件.
源目录包含许多大型图像和视频文件.
需要使用该aws s3 cp命令将这些文件上载到AWS S3存储桶.例如,作为此构建过程的一部分,我将我的图像文件复制my_image.jpg到S3存储桶,如下所示:aws s3 cp my_image.jpg s3://mybucket.mydomain.com/
我手动将此副本发送到AWS没有问题.我也可以编写脚本.但是我想使用makefile上传我的图像文件,my_image.jpg 如果我的S3存储桶中的同名文件比我的源目录中的文件旧.
通常make非常擅长基于文件日期的这种依赖性检查.但是,有什么方法可以告诉我make从S3存储桶中的文件获取文件日期并使用它来确定是否需要重建依赖项?
我想这样做,以便 IAM 用户可以从 S3 存储桶下载文件,但在执行时访问被拒绝aws s3 sync s3://<bucket_name> .我尝试了各种方法,但都无济于事。我做的一些步骤:
aws configure在我的 CLI 中执行并为上述用户输入生成的访问密钥 ID 和秘密访问密钥我的存储桶有一个文件夹名称 AffectivaLogs,其中文件是由各种用户匿名添加的,看起来虽然存储桶是公开的,但其中的文件夹不是,我什至无法将其公开,这导致以下错误。
以下是公共访问设置:
更新:我按如下方式更新了存储桶策略,但它不起作用。