環境:
現象:
lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS nvme0n1 259:0 0 50G 0 disk nvme1n1 259:1 0 20G 0 disk ├─nvme1n1p1 259:2 0 200M 0 part /boot/efi ├─nvme1n1p2 259:3 0 1G 0 part /boot └─nvme1n1p3 259:4 0 18.8G 0 part /
原因:
解決:
lsblk -o PATH,SERIAL,UUID
lsblk /dev/nvme1n1 -no UUID
sudo wipefs -i /dev/nvme1n1 -O UUID
sudo nvme id-ctrl --raw-binary /dev/nvme1n1 | cut -c3073-3104 | tr -s ' ' | sed 's/ $//g' sdf
UUID=***-***-***-***-*** /mnt/ebs1 xfs defaults,nofail,comment=ansible 0 0
ansibleで自動化したい場合:
# フォーマットする前では、UUIDが空になる sudo mkfs.xfs /dev/sdf lsblk /dev/sdf -no UUID
記事:
記事:
記事:
profile=example region=ap-northeast-1 aws ec2 describe-addresses --region $region --query 'Addresses[?AssociationId==null].{PublicIp:PublicIp,Domain:Domain}' --profile $profile --output text vpc xxx.xxx.xxx.xxx
記事:
記事:
t3:
Enhanced networking with the Elastic Network Adapter (ENA) is required for the 't3.micro' instance type. Ensure that your instance 'i-xxxx' is enabled for ENA.
modinfo ena
# サポートしていない場合。以下のエラー。yum updateが必要
modinfo: ERROR: Module ena not found.
# CentOS 7: NVMeの場合、EBS1は以下にマウントされた /dev/nvme1n1
t2からt3へ変えたい場合:
sudo yum install NetworkManager sudo service NetworkManager start sudo chkconfig NetworkManager on
modinfo ena # enaが未サポートの場合、yum updateして再起動 sudo yum upgrade kernel -y sudo reboot
profile=example region=ap-northeast-1 ec2_instance_id=i-123456789012 # EnaSupportの結果を取得 aws ec2 describe-instances --profile $profile --region $region --instance-ids $ec2_instance_id --query "Reservations[].Instances[].EnaSupport" --output text False # EnaSupportをTrueへ変更 aws ec2 modify-instance-attribute --profile $profile --region $region --instance-id $ec2_instance_id --ena-support
記事:
記事:
PROFILE=example REGION=ap-northeast-1 # ec2のAssociationIdを確認 aws ec2 describe-iam-instance-profile-associations \ --filters "Name=instance-id,Values=i-012345678910abcde" \ --profile $PROFILE \ --region $REGION # 最新のinstance-profile idを確認 aws iam get-instance-profile --instance-profile-name EXAMPLEPROFILENAME --profile $PROFILE --region $REGION # 置換 aws ec2 replace-iam-instance-profile-association \ --iam-instance-profile Name=EXAMPLEPROFILENAME \ --association-id iip-assoc-0123456789 \ --profile $PROFILE \ --region $REGION
aws ec2 describe-availability-zones --profile example --region ap-northeast-1 { "AvailabilityZones": [ { "OptInStatus": "opt-in-not-required", "Messages": [], "ZoneId": "apne1-az4", "GroupName": "ap-northeast-1", "State": "available", "NetworkBorderGroup": "ap-northeast-1", "ZoneName": "ap-northeast-1a", "RegionName": "ap-northeast-1" }, ...
記事:
現象:
対策:
sudo yum install NetworkManager sudo service NetworkManager start sudo chkconfig NetworkManager on
m5, t3シリーズ等。
/dev/nvme0n1p1 / (root volume) /dev/nvme1n1 /mnt/ebs0 /dev/nvme2n1 /mnt/ebs1
sudo file -s /dev/nvme?n*
Private Subnet上のEC2はPublic IPを割り当てても通信できない。
aws ec2 stop-instances --instance-id i-xxxx --force --profile default --region ap-northeast-1
外部 DNS ホスト名を解決すると、インスタンスのパブリック IP アドレス (インスタンスのネットワーク外の場合) およびインスタンスのプライベート IPv4 アドレス (インスタンスのネットワーク内からの場合) となります。
AWSの場合、ssh設定ファイルを間違えたり、iptablesを間違えたりするとsshログインできなくなる。
他のクラウドでは管理画面からターミナルを開けたりするので最悪そこから編集できる。
curl http://checkip.amazonaws.com/ curl https://checkip.amazonaws.com/
今まで面倒だったEBSスナップショットのリージョン間のコピーが ec2-copy-snapshot で出来るようになった
./ec2-copy-snapshot --region ap-southeast-1 -r ap-northeast-1 -s snap-xxxxx
# m1.largeの例 resize2fs /dev/xvde1 reboot
fdisk /dev/xvde ---- Command (m for help): p ... Device Boot Start End Blocks Id System /dev/xvde1 * 1 1044 8385898+ 83 Linux ---- Command (m for help): d Selected partition 1 ---- Command (m for help): n Command action e extended p primary partition (1-4) p Partition number (1-4): 1 First cylinder (1-5221, default 1): Using default value 1 Last cylinder, +cylinders or +size{K,M,G} (1-5221, default 5221): Using default value 5221 ---- Command (m for help): p ... Device Boot Start End Blocks Id System /dev/xvde1 1 5221 41937651 83 Linux ---- Command (m for help): w ... ---- reboot resize2fs /dev/xvde1 df -h Filesystem Size Used Avail Use% Mounted on /dev/xvde1 40G 2.6G 35G 7% / ...
{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "ec2.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Action": "ec2:DescribeRegions", "Resource": "*" } }
# 値が取れる curl -s -m 1 http://169.254.169.254/latest/meta-data/identity-credentials/ec2/security-credentials/ec2-instance # access_key, secret_key, regionが自動で設定される aws configure list Name Value Type Location ---- ----- ---- -------- profile <not set> None None access_key ****************SELV iam-role secret_key ****************BEdR iam-role region ap-northeast-1 imds # region一覧が取得できる aws ec2 describe-regions
aws configure list --debug ... 2022-06-16 09:13:28,784 - MainThread - botocore.utils - DEBUG - Error response received when retrievingcredentials: {'Code': 'AssumeRoleUnauthorizedAccess', 'Message': 'EC2 cannot assume the role <role name>. Please see documentation at https://docs.aws.amazon.com/IAM/latest/UserGuide/troubleshoot_iam-ec2.html#troubleshoot_iam-ec2_errors-info-doc.', 'LastUpdated': '2022-06-16T07:47:56Z'}.
仮想化方式の違いで、PV, HVMがある。
試行錯誤の結果、rsyncでは失敗し以下の方法で成功した。
EC2起動に失敗する場合、EC2起動時のstatus checkが1/2等になっていた。
wget http://s3.amazonaws.com/ec2-downloads/ec2-ami-tools.zip unzip ec2-ami-tools.zip rm ec2-ami-tools.zip ln -s ec2-ami-tools-1.4.0.9 ec2-ami-tools
export EC2_HOME=~/ec2-ami-tools ~/ec2-ami-tools/bin/ec2-bundle-vol -r x86_64 -e /mnt -d /mnt/ -k ~/.aws/pk.pem -c ~/.aws/cert.pem -u 000000000000
time dd if=/mnt/image of=/dev/sdf real 32m42.451s fsck /dev/sdf rm -f /mnt/{image,image.*}
Type Device Snapshot ID Size Volume Type IOPS Delete on Termination Root /dev/sda1 8 standard true EBS /dev/sdf 10 standard false
<Files healthcheck.txt> Satisfy Any Allow from 10.0.0.0/8 </Files>
# GETが無い場合、curl/wgetでも取得可能 # 取得できる値一覧 curl -s -m 1 http://169.254.169.254/latest/meta-data/ # availability-zone (ap-northeast-1a) curl -s -m 1 http://169.254.169.254/latest/meta-data/placement/availability-zone # ユーザデータの取得 curl -s -m 1 http://169.254.169.254/latest/user-data # instance-profileで設定されたiam role他の情報 curl -s -m 1 http://169.254.169.254/latest/meta-data/identity-credentials/ec2/security-credentials/ec2-instance