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'>