AWS
cli
awscli
ALB

【AWS_CLI】ALBのリダイレクト設定

2018/7/25に対応されたALBのリダイレクト設定です。

参考ページ


CLI version


awscli

aws --version

aws-cli/1.15.66 Python/3.6.4 Darwin/17.7.0 botocore/1.10.65

そもそもaws-cli/1.15.66より古いバージョンだと、RedirectConfigがないのでエラー吐きます。

なのでアップデート必須


JSON

ワンライナーで試してたのですが、RedirectConfigを2つ以上設定すると謎のエラー吐くのでJSONで逃げました。


alb_RedirectConfig.json

{

"LoadBalancerArn": "[ALBのARN]",
"Protocol": "HTTP",
"Port": 80,
"DefaultActions": [
{
"Type": "redirect",
"RedirectConfig": {
"Protocol": "HTTPS",
"Port": "443",
"Host": "#{host}",
"Path": "/#{path}",
"Query": "#{query}",
"StatusCode": "HTTP_301"
}
}
]


CLI


awscli

aws elbv2 create-listener  --cli-input-json file://alb_RedirectConfig.json  --profile [aws conflimのprofile]


--profileはプロファイル分けてる人用なので、要らなければ外してください。


結果

$ aws elbv2 create-listener  --profile jupiter_develop --cli-input-json file://alb_RedirectConfig.json

{
"Listeners": [
{
"ListenerArn": "[ListenerのARN]",
"LoadBalancerArn": "[ALBのARN]",
"Port": 80,
"Protocol": "HTTP",
"DefaultActions": [
{
"Type": "redirect",
"RedirectConfig": {
"Protocol": "HTTPS",
"Port": "443",
"Host": "#{host}",
"Path": "/#{path}",
"Query": "#{query}",
"StatusCode": "HTTP_301"
}
}
]
}
]
}



感想

ちなみにコンソールからやると5分で終わります/(^o^)\

CLIでやりたかったので、あれこれ調べたりCLIバージョンではまったり、エラーでハマったりとかしてたら2時間くらいかかりました・・・

ただやっぱり画面はコロコロ変わるのがAWSなので、コマンドで残すのは再現性高くていいなと思ってます。


おまけ

ワンライナーのときの謎のエラーです。

StatusCode=HTTP_301だと出ないですが、2つ以上の要素足していくとでます/(^o^)\


error

aws elbv2 create-listener  --load-balancer-arn [albのarn] --protocol HTTP --port 80 --default-actions Type=redirect,RedirectConfig={StatusCode=HTTP_301,Port=80} 

Invalid type for parameter DefaultActions[0].RedirectConfig, value: StatusCode=HTTP_301, type: <class 'str'>, valid types: <class 'dict'>
Invalid type for parameter DefaultActions[1].RedirectConfig, value: Port=80, type: <class 'str'>, valid types: <class 'dict'>


参考資料

create-rule — AWS CLI 1.15.66 Command Reference