簡體   English   中英

Cloudwatch 代理未在 Windows 上使用環境變量憑證

[英]Cloudwatch agent not using environment variable credentials on Windows

我正在嘗試使用腳本配置 AMI,該腳本通過使用 static IAM 憑據在 AWS 和本地 Windows 機器上安裝統一的 Cloudwatch 代理。 作為腳本的一部分,我使用靜態設置憑據(作為測試)

$Env:AWS_ACCESS_KEY_ID="myaccesskey"
$Env:AWS_SECRET_ACCESS_KEY="mysecretkey"
$Env:AWS_DEFAULT_REGION="us-east-1"

擁有 AMI 后,我會創建一台機器並連接到它,然后通過運行aws configure list驗證憑據是否存在

  Name                    Value             Type    Location
  ----                    -----             ----    --------
  profile                <not set>             None    None
  access_key     ****************C6IF          env
  secret_key     ****************SCnC          env
  region                us-east-1              env    ['AWS_REGION', 'AWS_DEFAULT_REGION']

但是當我啟動代理時,我在日志中收到以下錯誤。

2022-12-26T17:51:49Z I,第一次為日志組test-cloudwatch-agent設置保留,更新map避免設置兩次
2022-12-26T17:51:49Z E:無法從 session 獲取憑證:NoCredentialProviders:鏈中沒有有效的提供者
原因:EnvAccessKeyNotFound:無法在環境中找到憑據。
SharedCredsLoad:無法加載配置文件,。
EC2RoleRequestError:找不到 EC2 實例角色
原因:EC2MetadataError:無法發出 EC2Metadata 請求

我正在使用管理員用戶安裝代理,然后在 RDP 連接到機器時使用。 有什么我想念的嗎? 我已經嘗試將憑據添加到.aws/credentials文件並修改common-config.toml文件以使用配置文件。 這樣就可以了,但就我而言,我只想使用環境變量。

編輯:我測試了在 userdata 腳本中添加憑據並稍微修改了它們的創建方式,現在它似乎可以工作了。

$env:aws_access_key_id = "myaccesskeyid"  
$env:aws_secret_access_key = "mysecretaccesskey"    
[System.Environment]::SetEnvironmentVariable('AWS_ACCESS_KEY_ID',$env:aws_access_key_id,[System.EnvironmentVariableTarget]::Machine)      
[System.Environment]::SetEnvironmentVariable('AWS_SECRET_ACCESS_KEY',$env:aws_secret_access_key,[System.EnvironmentVariableTarget]::Machine)       
[System.Environment]::SetEnvironmentVariable('AWS_DEFAULT_REGION','us-east-1',[System.EnvironmentVariableTarget]::Machine)

現在的問題是,我正在嘗試使用文檔中的命令在用戶數據腳本的末尾啟動代理,但它什么也沒做(我在代理日志中看到命令,但沒有錯誤)。 如果我通過 RDP 進入機器並在 Powershell 中啟動相同的命令,它工作正常。 命令是:

& "C:\Program Files\Amazon\AmazonCloudWatchAgent\amazon-cloudwatch-agent-ctl.ps1" -a fetch-config -m onPrem -s -c file:"C:\ProgramData\Amazon\AmazonCloudWatchAgent\amazon-cloudwatch-agent.json"

我終於能夠讓它工作,但我不確定為什么它以前沒有。 我在用

$env:aws_access_key_id = "accesskeyid"  
$env:aws_secret_access_key = "secretkeyid"    
[System.Environment]::SetEnvironmentVariable('AWS_ACCESS_KEY_ID',$env:aws_access_key_id,[System.EnvironmentVariableTarget]::Machine)      
[System.Environment]::SetEnvironmentVariable('AWS_SECRET_ACCESS_KEY',$env:aws_secret_access_key,[System.EnvironmentVariableTarget]::Machine)       
[System.Environment]::SetEnvironmentVariable('AWS_DEFAULT_REGION','us-east-1',[System.EnvironmentVariableTarget]::Machine)

設置變量,但隨后代理無法初始化。 我不得不補充

$env:aws_default_region = "us-east-1"  

所以它能夠運行。 我之前找不到問題,因為在 Windows 服務器 2022 上我沒有從執行中獲取日志。 我不得不嘗試使用 Windows Server 2019 在啟動代理時實際看到錯誤。

我仍然不知道為什么我在機器 scope 中設置的環境變量在登錄機器后起作用,但在將它們用作用戶數據腳本的一部分時卻不起作用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM