При использовании #DNS #Alias нужно учитывать, что #HostedZoneId разный для разных Alias Target.
Для #CloudFront он фиксированный Z2FDTNDATAQYW2:
Для #LoadBalancer нужно получать его через #GetAtt, для #ELB это:
Для #ALB это:
Для #alias на другую #RecordSet нужно получать #HostedZoneId домена:
def Result = sh( script: 'aws route53 list-hosted-zones-by-name --dns-name '+gos.MainDomain, returnStdout: true )
def ResultJson = readJSON ( text: Result )
Stack['dns']['params']['HostedZoneIdDomain'] = ResultJson['HostedZones'][0]['Id'].split('/')[2]
Для #CloudFront он фиксированный Z2FDTNDATAQYW2:
aliasSite:
Type: AWS::Route53::RecordSet
Properties:
HostedZoneName: !Join ['', [!Ref MainDomain, '.']]
Name: !Ref MainDomain
Type: A
AliasTarget:
DNSName: !Ref CnameSite
HostedZoneId: Z2FDTNDATAQYW2
Для #LoadBalancer нужно получать его через #GetAtt, для #ELB это:
HostedZoneId1:
Value: !GetAtt [elbExt, 'CanonicalHostedZoneNameID']Для #ALB это:
HostedZoneId1:
Value: !GetAtt [albExt, 'CanonicalHostedZoneID']Для #alias на другую #RecordSet нужно получать #HostedZoneId домена:
def Result = sh( script: 'aws route53 list-hosted-zones-by-name --dns-name '+gos.MainDomain, returnStdout: true )
def ResultJson = readJSON ( text: Result )
Stack['dns']['params']['HostedZoneIdDomain'] = ResultJson['HostedZones'][0]['Id'].split('/')[2]
Amazon
Values specific for simple alias records - Amazon Route 53
When you create alias records, you specify the following values. For more information, see .
При использовании #ELB (созданного через #CloudFormation) с большим количеством инстансов, стоит помнить про фичу Cross-Zone Load Balancing, которая отключена по умолчанию (при создании балансера через консоль - включена по умолчанию).
Итого: для #ELB её нужно включать для более гладкого распределения трафика. У #ALB всегда включена, у #NLB - нужно включать самому.
Итого: для #ELB её нужно включать для более гладкого распределения трафика. У #ALB всегда включена, у #NLB - нужно включать самому.
Amazon
How Elastic Load Balancing works - Elastic Load Balancing
Learn more about how Elastic Load Balancing works.
Пример использования Amazon #Connect + #Lambda +Amazon #Lex для реализации #ASR (Automatic #Speech_Recognition).
Greenice
Creating a Call-Center Bot with AWS Connect and Amazon Lex
A case study of an attempt to use AWS Lex in pair with AWS Connect to create a chatbot that takes the orders for an online shop! Was it a success or fail?
Для #ECS наконец появились образы на базе #AMILinux2 - ECS-Optimized Amazon Linux 2 AMI. Для автоматического получения добавляем '-2' в конце. Или скрипт для #CloudFormation #templates:
for region in $(aws ec2 describe-regions --region us-east-1 --query 'Regions[].[RegionName]' --output text | sort); \
do printf " ${region}:\n AmiId: \
$(aws ssm get-parameters --names /aws/service/ecs/optimized-ami/amazon-linux-2/recommended/image_id \
--query 'Parameters[0].[Value]' --output text --region $region)\n" ; done
Amazon
Amazon ECS-Optimized Amazon Linux 2 AMI - Amazon Elastic Container Service
The Amazon ECS-optimized Amazon Linux 2 AMI is the recommended AMI to use for launching your Amazon ECS container instances. Amazon ECS provides separate Amazon ECS-optimized Amazon Linux 2 AMIs for x86 and arm64 architecture.
Использование #Lambda в #VPC сильно замедляет её старт, точней очень сильно (10 секунд плюс). #issue
theburningmonk.com
I’m afraid you’re thinking about AWS Lambda cold starts all wrong
Learn to build production-ready serverless applications on AWS
Используя какую-то #IAM роль для переключения в другую роль, нужно не забывать про role chaining:
Using the credentials for one role to assume a different role is called role chaining. When you use role chaining, your new credentials are limited to
Это в, в частности, объясняет раздражающую всех проблему при использовании AWS #SSO - когда через час сбразывается сессия.
Using the credentials for one role to assume a different role is called role chaining. When you use role chaining, your new credentials are limited to
a maximum duration of one hour. Это в, в частности, объясняет раздражающую всех проблему при использовании AWS #SSO - когда через час сбразывается сессия.
Amazon
Methods to assume a role - AWS Identity and Access Management
Learn the different methods you can use to assume an IAM role.
Cloud Custodian https://capitalone.github.io/cloud-custodian/docs/index.html подойдёт для реализации #compliance, проверки #policy и всевозможных требований к различным #environment. При этом #serverless и помимо #AWS поддерживает также #Azure и #google #GCP.
В общем случае (99%) лучше не использовать #NACL (Network ACL), т.к. их использование в дополнение к #security_group сильно запутывает будущую поддержку (можно забыть и долго после вспоминать, почему не работает, хотя доступ стоит), однако они могут выручить, если нужно:
—быстро/просто забанить внейшний айпишник (а нет возможности-желания лезть в инстанс и делать это через #iptables)
— разграничить доступ (изолировать) между подсетями внутри одной #VPC
—быстро/просто забанить внейшний айпишник (а нет возможности-желания лезть в инстанс и делать это через #iptables)
— разграничить доступ (изолировать) между подсетями внутри одной #VPC
Amazon
Control subnet traffic with network access control lists - Amazon Virtual Private Cloud
Use network access control lists to control traffic in and out of a subnet.
Чтобы ограничить доступ на отдельный #Region, то в #IAM с середины 2018-го года имеется специальный #condition
aws:RequestedRegion:{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "DenyAllRegionsExceptFrankfurt",
"Effect": "Deny",
"NotAction": [
"iam:*",
"organizations:*",
"support:*",
"aws-portal:*",
"route53:*"
],
"Resource": "*",
"Condition": {
"StringNotEquals": {
"aws:RequestedRegion": [
"eu-central-1"
]
}
}
}
]
}
Блок "NotAction" добавлен для регионов, которые глобальные (чтобы к ним не применялось это правило).Amazon
Easier way to control access to AWS regions using IAM policies | Amazon Web Services
Update on February 20, 2019: We updated the policy example to remove the “iam:AttachRolePolicy” permission. We also added a reference to the permissions boundaries security blog post to show how to grant developers the permissions to create roles they can…
В погоне за #kubernetes в #ECS добавили #Service_Discovery.
https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-discovery.html
https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-discovery.html
Amazon
Use service discovery to connect Amazon ECS services with DNS names - Amazon Elastic Container Service
Learn how to connect Amazon ECS services using DNS names.
AWS Notes
Используя какую-то #IAM роль для переключения в другую роль, нужно не забывать про role chaining: Using the credentials for one role to assume a different role is called role chaining. When you use role chaining, your new credentials are limited to a maximum…
Исправление "раздражающей всех проблемы" — у #SSO появилась возможность установить Session Duration.
Amazon Web Services, Inc.
AWS Single Sign-On Now Enables You to Optimize How Long You can Access AWS Accounts
Чтобы узнать #instance_type из #metadata на самой #ec2 виртуалке:
wget -T 10 -O- https://169.254.169.254/latest/meta-data/instance-type 2>/dev/nullhttps://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/ec2-instance-metadata.html
Amazon
Instance metadata and user data - Amazon Elastic Compute Cloud
Access instance metadata, dynamic data, and user data to configure and manage a running Amazon EC2 instance.
Когда нужно подобрать/оценить нужный тип #EC2 инстанса по требованиям типа "ходовые и только самые современные с 4 или 8 процессорами в Лондоне", то можно использовать regex
((c|m)5|t3).*(4|8) vCPUs на https://ec2instances.info/?filter=((c%7Cm)5%7Ct3).*(4%7C8).vCPUs®ion=eu-west-2 — #info.#recommendation — для имён переменных в #CloudFormation #templates лучше не использовать имена переменных, начинающихся с имени стэка, т.к. в Physical ID добавляется имя стэка и возникает визуальная путаница (особенно при использовании #nested_stacks):
jdot-St1IAM-16Z64H1UDUQF3-jdotInstanceProfile-WJ74BPFLW925#recommendation Используемая практика именования переменных в #CloudFormation #templates у самого Амазана весьма ущербная - параметры начинаются с маленькой буквы p, а ресурсы начинаются с маленькой r:
Ущербность выявляется, когда выходишь за пределы одного стэка (особенно явно в #nested_stacks) — приходится переименовывать "бывшие" в одном стэке ресурсы в параметры в другом, что приводит при такой схеме к смене имени и сильно затрудняет сопровождение, а также плодит ошибки при переиспользование кода.
За многие годы я пришёл к другой схеме именования - параметры и ресурсы (если их нужно передавать) имеют одинаковые имена, лишь только добавляется правило, что все ресурсы начинаютс с маленькой буквы, а параметры с большой.
Кроме того, в имени ресурса почти всегда принципиально видеть тип, потому пример выше преобразуется в:
Сначала кажется, что это как раз добавит путаницу, но очень скоро станет понятно, что обычно совпадающие имена (лишь начинающиеся с разной буквы) встречаются редко (обычно при создании бакетов или юзеров, где передаётся их имя), а возможность поиска по всему проекту(-ам) для последующего оптового переименования в случае надобности - крайне удобна.
pDMZSubnetA
rDMZSubnetA
Ущербность выявляется, когда выходишь за пределы одного стэка (особенно явно в #nested_stacks) — приходится переименовывать "бывшие" в одном стэке ресурсы в параметры в другом, что приводит при такой схеме к смене имени и сильно затрудняет сопровождение, а также плодит ошибки при переиспользование кода.
За многие годы я пришёл к другой схеме именования - параметры и ресурсы (если их нужно передавать) имеют одинаковые имена, лишь только добавляется правило, что все ресурсы начинаютс с маленькой буквы, а параметры с большой.
Кроме того, в имени ресурса почти всегда принципиально видеть тип, потому пример выше преобразуется в:
SubnetDmzA
subnetDmzA
Сначала кажется, что это как раз добавит путаницу, но очень скоро станет понятно, что обычно совпадающие имена (лишь начинающиеся с разной буквы) встречаются редко (обычно при создании бакетов или юзеров, где передаётся их имя), а возможность поиска по всему проекту(-ам) для последующего оптового переименования в случае надобности - крайне удобна.
GitHub
cloudformation-examples/s3/cross-account-cross-region-replication/source-region.yml at master · applerom/cloudformation-examples
AWS CloudFormation code examples. Contribute to applerom/cloudformation-examples development by creating an account on GitHub.
#note При копировании #s3_cp или синхронизации #s3_sync пустые каталоги не создаются, т.к. #S3 работает с объектами (файлами) и не в курсе про каталоги (это лишь путь к объекту).
Если нужно с пустыми - используем сторонние утилиты (например, S3cmd).
При особо страстном желании, можно добавить энный плюсик в просьбу добавления такого функционала в официальную версию.
Если нужно с пустыми - используем сторонние утилиты (например, S3cmd).
При особо страстном желании, можно добавить энный плюсик в просьбу добавления такого функционала в официальную версию.
s3tools.org
Amazon S3 Tools: Command Line S3 Client and S3 Backup for Windows, Linux: s3cmd, s3express
S3Cmd, S3Express: Fully-Featured S3 Command Line Tools and S3 Backup Software for Windows, Linux and Mac. More than 60 command line options, including multipart uploads, encryption, incremental backup, s3 sync, ACL and Metadata management, S3 bucket size…
#note После применения (изменения) #IAM_role на инстанс, права изменяются (обновляются) где-то через 30 секунд, а после добавления в #role новой #policy — где-то 2-3 минуты.
При проблемах на амазоне максимальное время применения #IAM — 5-6 минут. Если прошло больше и всё равно не работает, то "проблема на вашей стороне".
При проблемах на амазоне максимальное время применения #IAM — 5-6 минут. Если прошло больше и всё равно не работает, то "проблема на вашей стороне".