エラー対応まとめ
・Please make sure the creds you used have the right permissions configured for SSM access
・Error in putting config to parameter store
解釈:「SSMパラメータストアへのアクセス権限がありません」
原因:アタッチしている「CloudWatchAgentServerPolicyポリシー」では権限が足りない
対応:新しく下記2つのポリシーをアタッチしたロールを用意する(あるいは変更する)
「CloudWatchAgentAdminPolicy」ポリシー
「AmazonSSMManagedInstanceCore」ポリシー
理由:json > Statement > Action で「ssm:PutParameter」権限を許可しているため
参考:CloudWatch エージェントで使用する IAM ロールとユーザーを作成する
・unable to determine aws-region
解釈:「リージョンが特定できないです」
原因:以下複数考えられる
①「/root/.aws/」直下に「credentials」「config」ファイルが存在しない
②「amazon-cloudwatch-agent.toml」ファイルが正しくない
③「config.json」ファイルが正しくない
対応:以下対応されているか確認する
①【aws configure】コマンドを実行し内容を設定する
>aws configure
AWS Access Key ID [None]: {IAMユーザのアクセスキー}
AWS Secret Access Key [None]: {IAMユーザのシークレットアクセスキー}
Default region name [None]: {対象サーバのリージョン}
Default output format [None]: json
②「amazon-cloudwatch-agent.toml」を編集し[credentials]を書き換える
>vi /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.toml
# This common-config is used to configure items used for both ssm and cloudwatch access
## Configuration for shared credential.
## Default credential strategy will be used if it is absent here:
## Instance role is used for EC2 case by default.
## AmazonCloudWatchAgent profile is used for onPremise case by default.
[credentials]
shared_credential_profile = "{/root/.aws/credentials内のセクション名}"
shared_credential_file= "/root/.aws/credentials"
## Configuration for proxy.
## System-wide environment-variable will be read if it is absent here.
## i.e. HTTP_PROXY/http_proxy; HTTPS_PROXY/https_proxy; NO_PROXY/no_proxy
## Note: system-wide environment-variable is not accessible when using ssm run-command.
## Absent in both here and environment-variable means no proxy will be used.
# [proxy]
# http_proxy = "{http_url}"
# https_proxy = "{https_url}"
# no_proxy = "{domain}"
③「config.json」を編集し “region” を追加
>vi /opt/aws/amazon-cloudwatch-agent/bin/config.json
{
"agent": {
"region": "{対象サーバのリージョン}"
}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
}
理由:以下理由です
①構成設定および認証情報を正しく読み込みAWSサービスを利用するため
②CloudWatchエージェントが構成設定および認証情報を読み込めるようにするため
③CloudWatchエージェントに自分のリージョンを認識させるため
参考:以下参考になりました
設定ファイルと認証情報ファイルの設定
“Unable to determine aws-region” when running on-premises Cloudwatch agent
CloudWatch エージェント設定ファイルを手動で作成または編集する
・retries, going to sleep 1m0s before retrying.
・E! [outputs.cloudwatchlogs] Aws error received when sending logs to ~
・caused by: Post “{~amazonaws.com/} : proxyconnect tcp: dial tcp ~
解釈:「プロキシ設定に問題がありCloudWatchログが送れないです」
原因: 「amazon-cloudwatch-agent.toml」ファイルのプロキシ設定が誤っている
対応: 「amazon-cloudwatch-agent.toml」を編集し[proxy]を書き換える
>vi /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.toml
# This common-config is used to configure items used for both ssm and cloudwatch access
## Configuration for shared credential.
## Default credential strategy will be used if it is absent here:
## Instance role is used for EC2 case by default.
## AmazonCloudWatchAgent profile is used for onPremise case by default.
[credentials]
shared_credential_profile = "{/root/.aws/credentials内のセクション名}"
shared_credential_file= "/root/.aws/credentials"
## Configuration for proxy.
## System-wide environment-variable will be read if it is absent here.
## i.e. HTTP_PROXY/http_proxy; HTTPS_PROXY/https_proxy; NO_PROXY/no_proxy
## Note: system-wide environment-variable is not accessible when using ssm run-command.
## Absent in both here and environment-variable means no proxy will be used.
[proxy]
http_proxy = "{HTTP通信で経由するプロキシのURL:ポート番号}"
https_proxy = "{HTTPS通信で経由するプロキシのURL:ポート番号}"
# no_proxy = "{domain}"
理由:経由する中継サーバと通信できるようにするため
※場合によっては「no_proxy = “169.254.169.254”」を設定する必要有り
参考:プロキシ使用時に CloudWatch Agent を用いたログの転送に失敗したときの対処方法
こちら関連サイトです。
コメント