uz
Feedback
AWS Notes

AWS Notes

Kanalga Telegram’da o‘tish

AWS Notes — Amazon Web Services Educational and Information Channel Chat: https://t.me/aws_notes_chat Contacts: @apple_rom, https://www.linkedin.com/in/roman-siewko/ No ads.

Ko'proq ko'rsatish
5 801
Obunachilar
-324 soatlar
-67 kunlar
-730 kunlar
Postlar arxiv
Исправление "раздражающей всех проблемы" — у #SSO появилась возможность установить Session Duration.

В погоне за #kubernetes в #ECS добавили #Service_Discovery. https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-discovery.html

Чтобы ограничить доступ на отдельный #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" добавлен для регионов, которые глобальные (чтобы к ним не применялось это правило).

В общем случае (99%) лучше не использовать #NACL (Network ACL), т.к. их использование в дополнение к #security_group сильно запутывает будущую поддержку (можно забыть и долго после вспоминать, почему не работает, хотя доступ стоит), однако они могут выручить, если нужно: —быстро/просто забанить внейшний айпишник (а нет возможности-желания лезть в инстанс и делать это через #iptables) — разграничить доступ (изолировать) между подсетями внутри одной #VPC

Cloud Custodian https://capitalone.github.io/cloud-custodian/docs/index.html подойдёт для реализации #compliance, проверки #policy и всевозможных требований к различным #environment. При этом #serverless и помимо #AWS поддерживает также #Azure и #google #GCP.

Используя какую-то #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 duration of one hour. Это в, в частности, объясняет раздражающую всех проблему при использовании AWS #SSO - когда через час сбразывается сессия.

И ещё про такую же #issue — #API_Gateway + #lambda + #vpc #performance.

Использование #Lambda в #VPC сильно замедляет её старт, точней очень сильно (10 секунд плюс). #issue

Для #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

Ещё один #tutorial для #serverless #chatbot на Amazon #Lex + #Lambda + Amazon #Aurora

Пример использования Amazon #Connect + #Lambda +Amazon #Lex для реализации #ASR (Automatic #Speech_Recognition).

#EC2 #network #performance cheat-sheet. #info

При использовании #ELB (созданного через #CloudFormation) с большим количеством инстансов, стоит помнить про фичу Cross-Zone Load Balancing, которая отключена по умолчанию (при создании балансера через консоль - включена по умолчанию). Итого: для #ELB её нужно включать для более гладкого распределения трафика. У #ALB всегда включена, у #NLB - нужно включать самому.

При использовании #DNS #Alias нужно учитывать, что #HostedZoneId разный для разных Alias Target. Для #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]

Чтобы защитить #CloudFormation стэки от удаления/изменения (#termination_protection неудобно и даёт лишь защиту от удаления) в каком-то аккаунте (предполагая, что он входит в AWS #Organizations), можно добавить следующее #SCP: "CloudFormation CRUD Deny"
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "Stmt1539948147000",
      "Effect": "Deny",
      "Action": [
        "cloudformation:CreateChangeSet",
        "cloudformation:CreateStack",
        "cloudformation:CreateStackInstances",
        "cloudformation:CreateStackSet",
        "cloudformation:CreateUploadBucket",
        "cloudformation:DeleteChangeSet",
        "cloudformation:DeleteStack",
        "cloudformation:DeleteStackInstances",
        "cloudformation:DeleteStackSet",
        "cloudformation:ExecuteChangeSet",
        "cloudformation:SetStackPolicy",
        "cloudformation:UpdateStack",
        "cloudformation:UpdateStackInstances",
        "cloudformation:UpdateStackSet",
        "cloudformation:UpdateTerminationProtection"
      ],
      "Resource": [
        "*"
      ]
    }
  ]
}

#blue_green_deployment

Завести #external (internet-facing/#public) #LoadBalancer (#ELB/#ALB/#NLB) на расположенные в #private #subnet виртуалки никаких проблем нет. Просто указываем для него, как и положено, #DMZ #subnet (#public):
albExt:
  Type: AWS::ElasticLoadBalancingV2::LoadBalancer
  Properties:
    Name: externalAlb
    Scheme: internet-facing
    Subnets: # DMZ if public
      - !ImportValue subnetVpc4DmzA
      - !ImportValue subnetVpc4DmzB
    SecurityGroups:
      - !Ref sgAlb
А виртуалкам, расположенным и в #private_subnet добавляем в #security_group правила полного доступа с данного балансера:
sgInstance:
  Type: AWS::EC2::SecurityGroup
  Properties:
    VpcId: !ImportValue vpc4
    GroupDescription: Full access for ALB
    SecurityGroupIngress:
      - IpProtocol: tcp
        FromPort:   0
        ToPort:     65535
        SourceSecurityGroupId: !Ref sgAlb
        Description: All TCP trafic - only for ALB
#CloudFormation #templates

#DynamoDB #docker образ для локального #development - https://hub.docker.com/r/amazon/dynamodb-local/.

#CloudFront нельзя завести на #internal #LoadBalancer, т.к. он не умеет (не может) работать с элементами в #VPC, потому с #CloudFront — только #public (#internet-facing) #LoadBalancer.

#credits и #baseline для #t2 и #t3 инстансов - не забываем, что у #t3 два процессора даже для #nano, накопленные кредиты не сбрасываются в течении недели после остановки, да и просто всё выгодней, а цена ниже (чем у #t2).

AWS Notes - Telegram kanali @aws_notes statistikasi va tahlili