我通常在设置配置文件后使用AWS CLI命令,使用环境变量AWS\u profile
,使用~/。aws/凭证
文件。这很有效。
我目前正在尝试通过环境变量设置访问权限。为此,我在中设置这些变量。bash_profile
文件-我从凭证文件中复制了aws_access_key_id
和aws_secret_access_key
条目,并将它们放在我的bash_profile
文件中,名称为aws_access_key_id
和aws_secret_access_key
。
环境变量正在被正确设置,然而,当我试图访问AWS资源时(在这种情况下,我试图在桶上运行一个ls
S3命令,所以区域并不重要),我得到了消息
An error occurred (InvalidAccessKeyId) when calling the ListObjectsV2 operation: The AWS Access Key Id you provided does not exist in our records
这对我来说很奇怪,因为钥匙是完全一样的。为了确认这一点,我切换到我的凭据配置文件与AWS_PROFILE
环境变量,然后命令正常工作。
我怀疑,不知何故,我设置了错误的环境变量,或者类似的东西。然后,我阅读了这篇AWS指南,并运行命令aws配置列表
,在第一种情况下(仅有环境变量的情况),返回
Name Value Type Location
---- ----- ---- --------
profile <not set> None None
access_key ****************AAAA env
secret_key ****************AAAA env
region us-east-1 env ['AWS_REGION', 'AWS_DEFAULT_REGION']
对于第二种情况(配置文件集),它返回
Name Value Type Location
---- ----- ---- --------
profile dev-staging manual --profile
access_key ****************AAAA shared-credentials-file
secret_key ****************AAAA shared-credentials-file
region us-east-1 env ['AWS_REGION', 'AWS_DEFAULT_REGION']
换句话说,环境变量的设置是正确的,AWS CLI会确认它们,它们的值与通过凭据文件设置时的值相同,但是,由于某些原因,它不能以这种方式工作。
我认为这可能是因为aws_会话_令牌,我也尝试将其设置为环境变量,但没有成功。
我需要以这种方式访问AWS资源来模拟我的代码将在其中运行的环境,我不明白为什么这不会按照我想要的方式工作。
如果您有任何关于如何解决此问题的想法,我们将不胜感激。
如果有人偶然发现了这一点,一个可能的罪魁祸首可能是AWS_SESSION_TOKEN
和AWS_SECURITY_TOKEN
环境变量。
如果您之前使用了不同的AWS\u ACCESS\u KEY\u ID
,AWS\u SECRET\u ACCESS\u KEY
环境变量,并且直接或间接运行了AWS CLI
命令,则在首次身份验证后,将设置上述两个令牌变量。在我们用新值覆盖现有的AWS\u ACCESS\u KEY\u ID
,AWS\u SECRET\u ACCESS\u KEY
之后,较旧的令牌变量仍然保持原样,AWS CLI
没有明确检查访问/密钥是否已更新,它继续使用较旧的令牌,导致在内部使用较旧的密钥,并将继续这样做,直到令牌过期。aws configure将继续显示新的访问密钥,但在内部,由于缓存的令牌,它将使用旧的访问密钥。
因此,如果您想在这些场景中继续使用环境变量,您需要取消两个包含令牌的环境变量,在您的情况下,还需要在设置新的访问/秘密后为两个令牌变量添加一个取消命令环境变量中的键。
unset AWS_SESSION_TOKEN
unset AWS_SECURITY_TOKEN
这种行为是人们更喜欢使用不同配置文件的原因之一,要么使用aws配置
,要么编辑~/. aws/*
文件,并在命令中使用--file
显式指定它们,而不是使用环境变量。
按照AWS cli配置优先顺序,使用~/。aws/config
文件位于aws CLI获取要使用的身份验证的优先顺序的顶部,因此它会覆盖令牌环境变量并在您的情况下工作。
你需要编辑你的~/。当您希望引用环境变量中的凭据而不是凭据文件时,请使用aws/config文件。
对于凭证文件中的AWS访问密钥,您必须将配置文件设置为,否则任何配置文件都没有此类source\u配置文件
config:
[default]
source_profile = default
但是,如果要使用环境变量或bash_配置文件中设置的凭据,请将此设置更改/添加到配置文件中的每个配置文件:
[default]
credential_source = Environment
有了这个更改,它也应该与您的环境变量一起工作。
如果您在~/中有多个配置文件。aws/config文件,只需替换/添加源文件=
我有一个简单的测试。bat文件,如下所示 当我运行这个批处理文件时,它列出了我的生产帐户中的实例。当我在C:\Users\testuser检查我的用户配置文件位置时。aws,凭据文件具有我的生产帐户的访问密钥和密钥。 我的问题是每个aws留档(http://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html)
问题内容: 我已经使用Selenium和最初的PhantomJS开发了一些Python脚本。在走向自动下载时,我改用了(带头的)Firefox(运行了),然后选择了无头选项的Chrome,这样我就不会打开浏览器了。 我的第一个脚本访问一个页面和几个HTML元素,与无头Chrome完美搭配。 但是第二个 仅适用于带头的Chrome 。如果添加“无头”选项,它将不再起作用。当我尝试以无头模式打印HTM
问题内容: 我已经在端口8080(默认)下启动并测试了Tomcat。现在,我将连接器端口更改为80,并重新启动了Tomcat,在最小的Debian 6.0安装中没有任何显示。现在,这里的窍门在哪里? 问题答案: 转到/ etc / default / tomcat6并更改为
问题内容: 我对正则表达式很糟糕,但是我想知道是否可以将ng-pattern与变量一起使用 例如, 其中validationCode是控制器中附加到$ scope的变量 如果 则ng-pattern将是 但这不起作用,似乎我需要创建一个我真的不想要的自定义指令 问题答案: 需要一个正则表达式。 从Angular的文档中有关: 如果该值与模式表达式不匹配,则设置模式验证错误键。期望值用于内联模式或定
我给你的是不可变的。试试看。我需要的是能够指定一个类,所以我定义了 由immutables生成的生成器不接受此选项 因为它需要一门课 用@Value注释类型。参数很好地创建了一个有效的方法 但结果是一个实例,而不是一个生成器,因此只能使用withers设置后续值。
我有一个烧瓶服务器运行在http://127.0.0.1:5000和一个vuejs前端运行http://localhost:8080我已经做了api,并用postman测试了它,一切都如预期的那样工作:( > 将请求发布到/登录- (将请求发送至/登录)- 烧瓶API代码: 登录。vue: 指数vue 当我使用邮递员登录时,我得到的响应为;当我使用邮递员获取url/索引时,我得到响应。数据但当我使