AWS_Practical_Interview_1001 1500
AWS Practical Interview Questions (1001-1500)
Section titled “AWS Practical Interview Questions (1001-1500)”Advanced EC2 Scenarios
Section titled “Advanced EC2 Scenarios”Q1001: How do you configure EC2 Instance Connect?
Section titled “Q1001: How do you configure EC2 Instance Connect?”What it is: EC2 Instance Connect lets you SSH via browser/CLI through an Amazon-managed service, avoiding long-lived keys and opening port 22.
Why it is used: It reduces attack surface by pushing a temporary SSH key over the control plane.
# Enable Instance Connectaws ec2 describe-instance-connect-attributes --instance-id i-12345
# Connect using Instance Connectaws ec2-instance-connect ssh --instance-id i-12345 --instance-user ec2-userInterview talking point: “The connection uses ec2-instance-connect to push a one-time key. The instance needs the SSM agent and instance-connect package, and IAM requires ec2-instance-connect:SendSSHPublicKey. If the package or IAM is missing, the key push fails with an EC2InstanceConnect error.”
Q1002: How do you use EC2 Image Builder?
Section titled “Q1002: How do you use EC2 Image Builder?”What it is: EC2 Image Builder automates building, testing, and distributing AMIs as code using recipes, infrastructure configs, and distribution configs.
Why it is used: It replaces manual AMI creation with a repeatable, auditable process.
# Create image pipelineaws imagebuilder create-image-pipeline \ --name my-pipeline \ --image-recipe-arn arn:aws:imagebuilder:us-east-1:123:image-recipe/basic/1.0.0 \ --infrastructure-configuration-arn arn:aws:imagebuilder:us-east-1:123:infra/basicInterview talking point: “Builds run in your VPC with a build instance, so it needs internet/NAT access. Component YAML uses a specific steps schema. Builds incur charges for the instance, and finished AMIs are per-region copies defined by distribution settings.”
Q1003: How do you configure EC2 Fleet?
Section titled “Q1003: How do you configure EC2 Fleet?”What it is: EC2 Fleet launches a target capacity across instance types, AZs, and purchase models in one request to fulfill a capacity goal.
Why it is used: It combines on-demand and Spot capacity to optimize cost and diversity.
# Create fleetaws ec2 create-fleet \ --launch-template-configs '[{"launchTemplateId":"lt-123","version":"$Latest"}]' \ --target-capacity-specification '{"TotalTargetCapacity":10,"DefaultCapacityType":"spot"}' \ --spot-options '{"AllocationStrategy":"lowest-price"}'Interview talking point: “Use lowest-price for cheapest capacity or diversified to spread risk across types. A maintain fleet replaces interrupted Spot, while instant fires synchronously. ExcessCapacityTerminationPolicy controls behavior when shrinking target capacity.”
Q1004: How do you use EC2 Capacity Reservations?
Section titled “Q1004: How do you use EC2 Capacity Reservations?”What it is: A Capacity Reservation guarantees EC2 compute capacity for a specific instance type and AZ in advance of launch.
Why it is used: It ensures capacity is available for planned work like cutovers or DR drills.
# Create capacity reservationaws ec2 create-capacity-reservation \ --instance-type t3.medium \ --instance-platform Linux/UNIX \ --availability-zone us-east-1a \ --instance-count 5
# Modify reservationaws ec2 modify-capacity-reservation \ --capacity-reservation-id cr-123 \ --instance-count 10Interview talking point: “Reservations are per-AZ and per-family; a c5.large does not cover c5.xlarge. Modes are open (any matching instance uses it) or targeted (only the reservation ID). Capacity Blocks are the newer option for GPU/training windows.”
Q1005: How do you configure EC2 Placement Groups?
Section titled “Q1005: How do you configure EC2 Placement Groups?”What it is: Placement groups influence physical instance placement in an AZ: cluster for low latency, spread for high availability, or partition for fault domains.
Why it is used: They balance latency and hardware-failure resilience for specific workloads.
# Create cluster placement groupaws ec2 create-placement-group \ --group-name my-cluster \ --strategy cluster
# Create spread placement groupaws ec2 create-placement-group \ --group-name my-spread \ --strategy spread
# Create partition placement groupaws ec2 create-placement-group \ --group-name my-partition \ --strategy partition \ --partition-count 4Interview talking point: “Cluster gives same-rack low latency but a rack failure can take the group down. Spread allows max 7 running instances per AZ on separate hardware. Partition allows up to 7 partitions per AZ for workloads like Kafka or Hadoop.”
Advanced Lambda Scenarios
Section titled “Advanced Lambda Scenarios”Q1006: How do you implement Lambda SnapStart?
Section titled “Q1006: How do you implement Lambda SnapStart?”What it is: Lambda SnapStart takes a snapshot of an initialized environment when a function version is published and restores it for later invocations.
Why it is used: It reduces cold starts for Java and .NET functions with heavy initialization.
# Enable SnapStart (via console or API)aws lambda update-function-configuration \ --function-name my-function \ --snap-start '{"ApplyOn":"PublishedVersions"}'Interview talking point: “SnapStart applies only to published versions invoked via a version or alias, not $LATEST. Anything opened before snapshot, like DB pools or HTTP keepalives, must be reinitialized in a restore hook because restored connections may be stale.”
Q1007: How do you use Lambda Extensions?
Section titled “Q1007: How do you use Lambda Extensions?”What it is: Lambda Extensions are companion processes that run alongside functions and receive lifecycle events for observability, security, or utilities.
Why it is used: They let you run telemetry agents outside function code and share them across functions.
# Add extension layeraws lambda update-function-configuration \ --function-name my-function \ --layers 'arn:aws:lambda:us-east-1:123456789012:layer:extensions:1'Interview talking point: “Extensions run as external processes for the full invoke duration and consume memory/CPU. They are added as layers, so a heavy extension increases cost. Most teams use a lean shared extension layer for consistency across functions.”
Q1008: How do you implement Lambda Function URLs?
Section titled “Q1008: How do you implement Lambda Function URLs?”What it is: Lambda Function URLs provide a direct HTTPS endpoint for a function with configurable CORS and auth, no API Gateway or ALB required.
Why it is used: They offer a simple HTTP entry point for webhooks, small APIs, or form handlers.
# Create function URLaws lambda put-function-url-config \ --function-name my-function \ --auth-type AWS_IAM \ --cors-config '{"AllowOrigins":["*"],"AllowMethods":["GET","POST"]}'
# Invoke function URLFUNCTION_URL=$(aws lambda get-function-url-config --function-name my-function --query 'FunctionUrl' --output text)curl $FUNCTION_URLInterview talking point: “Auth can be AWS_IAM (SigV4) or NONE (public). Function URLs only support $LATEST or a single alias. On public URLs, a missing resource policy often causes Forbidden errors. CORS failures can also come from headers returned by the function itself.”
Q1009: How do you use Lambda Event Source Mapping?
Section titled “Q1009: How do you use Lambda Event Source Mapping?”What it is: Lambda Event Source Mapping is a built-in poller that reads from SQS, Kinesis, DynamoDB Streams, or Kafka and invokes functions in batches.
Why it is used: It connects streams and queues to Lambda without writing custom polling code.
# Create event source mappingaws lambda create-event-source-mapping \ --function-name my-function \ --event-source-arn arn:aws:kinesis:us-east-1:123456789012:stream/my-stream \ --batch-size 100 \ --starting-position LATESTInterview talking point: “For streams, starting position is LATEST or TRIM_HORIZON and ordering is preserved per shard. For SQS, use ReportBatchItemFailures for per-message ack. Batch size and batch window must be tuned by source to balance latency and throughput.”
Q1010: How do you implement Lambda VPC ENI management?
Section titled “Q1010: How do you implement Lambda VPC ENI management?”What it is: When a Lambda runs in a VPC, AWS attaches Hyperplane-managed ENIs so it can reach private resources without public IPs.
Why it is used: It enables secure access to RDS, ElastiCache, and internal services.
# Lambda VPC ENI management is automatic# For better control:# 1. Increase Lambda memory (more ENIs)# 2. Use VPC endpoints to reduce ENI need# 3. Use ENI trunking for high concurrencyInterview talking point: “You need at least two subnets in two AZs for HA. VPC configuration adds cold start latency. Without NAT or VPC endpoints for AWS services, internet access fails. Concurrency is limited by available ENIs, so high scale may need endpoints or more subnets.”
Advanced S3 Scenarios
Section titled “Advanced S3 Scenarios”Q1011: How do you implement S3 Access Analyzer?
Section titled “Q1011: How do you implement S3 Access Analyzer?”What it is: S3 Access Analyzer scans buckets and access points to identify policies that grant access to external principals.
Why it is used: It helps detect publicly readable or writable buckets and validates fixes.
# Enable Access Analyzeraws s3control put-access-point-configuration \ --account-id 123456789012 \ --access-point-name my-access-point \ --configuration '{"AccessPointTranslation":{"S3 translate":{}}}'Interview talking point: “The tool generates findings like ExternalAccess for non-account principals. Access Analyzer is free for reporting, and fixes involve tightening bucket policies plus the four public access block settings. It reports automatically and is key for exposure detection.”
Q1012: How do you use S3 Object Lambda?
Section titled “Q1012: How do you use S3 Object Lambda?”What it is: S3 Object Lambda lets a Lambda function transform objects on-the-fly for GET or POST requests via an Object Lambda Access Point.
Why it is used: It applies per-caller transformations like redaction or resizing without storing multiple object copies.
# Create Object Lambda Access Pointaws s3control create-access-point \ --name my-object-lambda \ --account-id 123456789012 \ --type ObjectLambda \ --configuration '{ "ObjectLambdaSupportedOperations": [{"Name":"GetObject"}], "TransformationConfigurations": [{"Action":{"Name":"GetObject"},"ContentTransformation":{"S3ApplyFilter":{}}}] }'Interview talking point: “Clients call the Object Lambda Access Point; the Lambda fetches the original via inputS3Url and returns the transformed object. Transforming on every request adds Lambda cost, so static transformations are better cached elsewhere. Write transforms are more complex.”
Q1013: How do you implement S3 Access Points?
Section titled “Q1013: How do you implement S3 Access Points?”What it is: S3 Access Points create scoped endpoints for a bucket with their own IAM policies and network restrictions.
Why it is used: They decentralize permissions so each app or team has a controlled entry point.
# Create access pointaws s3control create-access-point \ --account-id 123456789012 \ --name my-app-access-point \ --bucket my-bucket \ --public-access-block-configuration '{ "BlockPublicAcls": true, "IgnorePublicAcls": true }'Interview talking point: “Access points use their own ARN in requests and have separate network origin policies. Bucket-level BlockPublicAccess still applies. To enforce access only through access points, use bucket policy conditions like s3:AccessPointNetworkOrigin and s3:SourceVpce for strongest scoping.”
Q1014: How do you use S3 Storage Lens?
Section titled “Q1014: How do you use S3 Storage Lens?”What it is: S3 Storage Lens is an analytics dashboard that provides storage and activity metrics across buckets in an account or organization.
Why it is used: It helps identify growth trends, idle data, and expensive prefixes across many buckets.
# Create storage lensaws s3control put-storage-lens-configuration \ --account-id 123456789012 \ --storage-lens-configuration '{ "Id": "my-dashboard", "Include": {"Buckets": ["*"]}, "AccountLevel": {"ActivityMetrics":{"Enabled":true}},"Region": "us-east-1" }'Interview talking point: “Free metrics cover overall storage and activity; advanced metrics add prefix-level detail at extra cost. Data may have up to 15 hours of lag. Storage Lens can export to S3 for analysis with Athena, but it is an analytics tool, not a budget tool.”
Q1015: How do you implement S3 Glacier Vault Lock?
Section titled “Q1015: How do you implement S3 Glacier Vault Lock?”What it is: Glacier Vault Lock enforces a WORM policy on a vault through a two-step process that becomes irreversible after a 24-hour review.
Why it is used: It meets compliance requirements where archives must be immutable until a retention period expires.
# Initiate vault lockaws glacier initiate-vault-lock \ --vault-name my-vault \ --policy '{"Policy":"{\\"Version\\":\\"2012-10-17\\",\\"Statement\\":[{\\"Sid\\":\\"VaultLock\\",\\"Effect\\":\\"Deny\\",\\"Principal\\":\\"*\\",\\"Action\\":\\"glacier:DeleteArchive\\",\\"Resource\\":\\"*\\"}]}"}'
# Complete vault lock (after 24 hours)aws glacier complete-vault-lock \ --vault-name my-vault \ --lock-archive-id lock-idInterview talking point: “Initiate vault lock starts a 24-hour pending state; complete it makes the lock permanent and even root cannot delete archives before expiration. Aborting before completion cancels it. This is specific to Glacier archives, not the same as S3 Object Lock.”
Advanced VPC Scenarios
Section titled “Advanced VPC Scenarios”Q1016: How do you implement VPC Reachability Analyzer?
Section titled “Q1016: How do you implement VPC Reachability Analyzer?”What it is: VPC Reachability Analyzer models network paths between components to determine if traffic can flow and identify blocking hops.
Why it is used: It diagnoses connectivity issues faster than manually checking SGs, NACLs, routes, and gateways.
# Create and analyze pathaws network-insights-analyzer start-path-analysis \ --source '{"ComponentId":"i-12345"}' \ --destination '{"ComponentId":"i-67890"}' \ --protocol tcp
# Get analysis resultaws network-insights-analyzer get-path-analysis \ --path-analysis-id analysis-idInterview talking point: “It returns REACHABLE or NOT_REACHABLE with the exact blocking component. It models configuration, not live packets, so host firewalls or third-party appliances outside its view may still block traffic. It works within account/VPC in most cases.”
Q1017: How do you use VPC Traffic Mirroring?
Section titled “Q1017: How do you use VPC Traffic Mirroring?”What it is: VPC Traffic Mirroring copies traffic from a source ENI to a target destination using a filter to select what to copy.
Why it is used: It enables packet capture for IDS, IPS, or compliance without inline taps.
# Create traffic mirror targetaws ec2 create-traffic-mirror-target \ --description "Target" \ --network-interface-id eni-123
# Create traffic mirror filteraws ec2 create-traffic-mirror-filter \ --description "Filter"
# Create mirror sessionaws ec2 create-traffic-mirror-session \ --traffic-mirror-target-id tmt-123 \ --traffic-mirror-filter-id tmf-123 \ --network-interface-id eni-123 \ --session-number 1Interview talking point: “The setup requires a mirror target, filter, and session. Only ENIs attached to Nitro instances can be mirrored. The target must be in the same VPC or reachable via Transit Gateway. Mirroring copies packets only; it cannot block traffic.”
Q1018: How do you configure PrivateLink endpoint policies?
Section titled “Q1018: How do you configure PrivateLink endpoint policies?”What it is: VPC endpoint policies restrict what actions and resources a gateway or interface endpoint can reach, in addition to IAM.
Why it is used: They scope access so an endpoint only allows necessary operations, limiting blast radius.
{ "Statement": [{ "Effect": "Allow", "Principal": "*", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::my-bucket/*", "Condition": { "aws:SourceVpc": {"Ref": "VPC"} } }]}Interview talking point: “Endpoint policies are additional restrictions, not grants. The underlying IAM and resource policies must still allow. Use conditions like aws:SourceVpce (strongest) or aws:SourceVpc to constrain access. A Principal of ”*” does not open the endpoint to the world.”
Q1019: How do you implement VPC DNS Firewall?
Section titled “Q1019: How do you implement VPC DNS Firewall?”What it is: Route 53 Resolver DNS Firewall filters DNS queries from VPCs against managed or custom rule groups to allow or block domains.
Why it is used: It blocks malware or command-and-control domains at the DNS layer across the VPC.
# Create DNS firewall rule groupaws route53resolver create-firewall-rule-group \ --name my-rule-group
# Create firewall ruleaws route53resolver create-firewall-rule \ --name block-malicious \ --firewall-rule-group-id rule-group-id \ --action BLOCK \ --block-response NODATA \ --query-type "A"Interview talking point: “Rules support actions BLOCK with responses like NODATA, NXDOMAIN, or OVERRIDE for sinkholes. It applies to outbound DNS through the Resolver, not to external resolvers instances query directly. The rule group is associated to a VPC for enforcement.”
Q1020: How do you use Transit Gateway Connect?
Section titled “Q1020: How do you use Transit Gateway Connect?”What it is: Transit Gateway Connect attaches VPN or SD-WAN appliances to a TGW via GRE tunnels, riding on a transport attachment.
Why it is used: It extends corporate networks into a TGW hub without creating a full VPN per spoke.
# Create Transit Gateway attachmentaws ec2 create-transit-gateway-connect \ --transport-transit-gateway-attachment-id tgw-attach-123 \ --options '{"Protocol":"gre"}'Interview talking point: “First create a transport attachment, then a Connect attachment with Protocol gre, then Connect peers using GRE and BGP. It supports SD-WAN termination but does not provide multicast. Cross-account requires shared attachments and AutoAcceptSharedAttachments enabled.”
Advanced RDS Scenarios
Section titled “Advanced RDS Scenarios”Q1021: How do you configure RDS Performance Insights?
Section titled “Q1021: How do you configure RDS Performance Insights?”What it is: RDS Performance Insights is a dashboard that analyzes database load into average active sessions and breaks it down by SQL, waits, hosts, and users.
Why it is used: It helps identify why a database is slow when CPU alone is not the cause.
# Enable Performance Insightsaws rds modify-db-instance \ --db-instance-identifier my-db \ --enable-performance-insights \ --performance-insights-kms-key-id key-id \ --performance-insights-retention-period 7
# Query Performance Insightsaws pi describe-dimension-keys \ --service-type RDS \ --db-instance-id my-db \ --start-time 2024-01-01 \ --end-time 2024-01-02 \ --metric db.cpu. utilizedInterview talking point: “7 days retention is free; longer retention costs extra. It shows db.load and wait events, revealing lock or I/O waits. PI must be enabled per instance or read replica. OS-level issues require Enhanced Monitoring, not just PI.”
Q1022: How do you use RDS Data API?
Section titled “Q1022: How do you use RDS Data API?”What it is: The RDS Data API lets you run SQL over HTTPS against Aurora Serverless using rds-data, with IAM and Secrets Manager for authentication.
Why it is used: It removes the need for a DB connection, hostname, or VPC networking in serverless applications.
import boto3
rdsdata = boto3.client('rds-data')
response = rdsdata.execute_statement( resourceArn='arn:aws:rds:us-east-1:123456789012:cluster:my-cluster', secretArn='arn:aws:secretsmanager:us-east-1:123456789012:secret:db-secret', database='mydb', sql='SELECT * FROM users')Interview talking point: “It works only with Aurora Serverless (v1/v2); provisioned RDS instances are not supported. Results are returned as JSON records. For high-throughput workloads, a direct connection pool is more efficient than repeated HTTP API calls.”
Q1023: How do you configure RDS IAM Authentication?
Section titled “Q1023: How do you configure RDS IAM Authentication?”What it is: RDS IAM Authentication replaces static DB passwords with short-lived tokens generated by generate-db-auth-token, validated by the RDS engine.
Why it is used: It eliminates password storage and ties DB access to IAM roles with automatic token rotation.
# Enable IAM authaws rds modify-db-instance \ --db-instance-identifier my-db \ --iam-db-authentication-enabled
# Generate auth tokenaws rds generate-db-auth-token \ --hostname my-db.cluster-123.rds.amazonaws.com \ --port 3306 \ --username adminInterview talking point: “Tokens are valid for 15 minutes and are bound to endpoint, port, and DB username. The DB user must be created with the engine-specific IAM auth plugin. IAM policy must grant rds-db:connect. Connection pools must fetch fresh tokens as they expire.”
Q1024: How do you use RDS Optimized Writes?
Section titled “Q1024: How do you use RDS Optimized Writes?”What it is: RDS Optimized Writes improves transaction throughput on supported Nitro instance families that use NVMe-based storage.
Why it is used: It delivers higher write throughput for write-heavy workloads with no extra configuration.
Enable automatically for r6i, r6id, r5b instance types
Section titled “Enable automatically for r6i, r6id, r5b instance types”No additional configuration needed
Section titled “No additional configuration needed”Benefits: 2x transaction throughput
Section titled “Benefits: 2x transaction throughput”Interview talking point: “It is enabled automatically on instance classes like r5b, r6i, r6id, and r6in; there is no API flag to toggle it. Older families do not support it. The benefit is most visible for log-heavy transactional workloads.”
Q1025: How do you configure RDS Enhanced Monitoring?
Section titled “Q1025: How do you configure RDS Enhanced Monitoring?”What it is: RDS Enhanced Monitoring collects OS-level metrics like CPU, memory, disk I/O, and process lists every 1-60 seconds to CloudWatch Logs.
Why it is used: It reveals host-level saturation that engine metrics alone may miss.
# Enable enhanced monitoringaws rds modify-db-instance \ --db-instance-identifier my-db \ --monitoring-interval 60 \ --monitoring-role-arn arn:aws:iam::123456789012:role/rds-monitoring-roleInterview talking point: “Requires monitoring-interval and a monitoring role that allows rds to publish metrics. OS-level metrics can show processes causing high CPU even when DB metrics look fine. Higher frequency intervals increase log volume and cost.”
Advanced DynamoDB Scenarios
Section titled “Advanced DynamoDB Scenarios”Q1026: How do you implement DynamoDB Point-in-Time Recovery?
Section titled “Q1026: How do you implement DynamoDB Point-in-Time Recovery?”What it is: DynamoDB Point-in-Time Recovery enables continuous backups so a table can be restored to any second within the last 35 days.
Why it is used: It protects against logical corruption, bad deployments, or accidental writes without relying only on snapshots.
# Enable PITRaws dynamodb update-continuous-backups \ --table-name my-table \ --point-in-time-recovery-specification '{ "PointInTimeRecoveryEnabled": true }'
# Restore tableaws dynamodb restore-table-to-point-in-time \ --source-table-name my-table \ --target-table-name my-table-restored \ --use-latest-restoration-timeInterview talking point: “PITR is disabled by default. Restores create a new table with a new ARN, not an in-place replacement. Restore time depends on table size. PITR backup storage incurs cost when enabled; there is no cost when disabled.”
Q1027: How do you implement DynamoDB Time to Live?
Section titled “Q1027: How do you implement DynamoDB Time to Live?”What it is: DynamoDB TTL automatically deletes items whose timestamp attribute has passed, running in the background with no write capacity consumed.
Why it is used: It expires temporary data like sessions and tokens without scheduled batch jobs.
# Enable TTLaws dynamodb update-time-to-live \ --table-name my-table \ --time-to-live-specification '{ "Enabled": true, "AttributeName": "expiresAt" }'Interview talking point: “The TTL attribute must be a number (epoch seconds), not a string. Deletions may take up to a few days to complete, so applications must treat expired-but-present items as invalid. Deleted items appear as deletes in DynamoDB Streams.”
Q1028: How do you use DynamoDBPartiQL?
Section titled “Q1028: How do you use DynamoDBPartiQL?”What it is: DynamoDB PartiQL lets you run SQL-like statements such as SELECT, INSERT, UPDATE, and DELETE against tables via execute-statement.
Why it is used: It provides familiar SQL syntax for simple operations without learning the raw DynamoDB API.
# Execute statementaws dynamodb execute-statement \ --statement "SELECT * FROM my-table WHERE id = '123'"
# Batch executeaws dynamodb batch-execute-statement \ --statements '[{"Statement":"INSERT INTO my-table VALUES {\\"id\\":\\"1\\",\\"name\\":\\"test\\"}"}]'Interview talking point: “PartiQL still follows DynamoDB’s key constraints; queries without a key condition perform scans. It supports positional parameters (?) but no joins or aggregations. Batch operations use batch-execute-statement, and permissions require dynamodb:ExecuteStatement actions.”
Q1029: How do you implement DynamoDB Key Conditions?
Section titled “Q1029: How do you implement DynamoDB Key Conditions?”What it is: A DynamoDB KeyConditionExpression filters Query results using an equality on the partition key and optional sort key conditions.
Why it is used: It fetches a contiguous range of items for a partition efficiently without scanning the whole table.
# Query with key conditionresponse = table.query( KeyConditionExpression=Key('pk').eq('user#123') & Key('sk').begins_with('order#'))Interview talking point: “Valid sort key conditions include begins_with, <, <=, >, >=, and between. Non-key attributes must go in FilterExpression, which is applied after reading items and still bills for them. GSI queries require the GSI’s key fields.”
Q1030: How do you use DynamoDB Local Secondary Indexes?
Section titled “Q1030: How do you use DynamoDB Local Secondary Indexes?”What it is: A DynamoDB Local Secondary Index (LSI) provides an alternate sort key on the same partition key as the base table.
Why it is used: It allows querying the same partition by a different sort attribute, such as createdAt instead of the main sort key.
# Create table with LSIaws dynamodb create-table \ --table-name my-table \ --attribute-definitions \ AttributeName=PK,AttributeType=S \ AttributeName=SK,AttributeType=S \ AttributeName=createdAt,AttributeType=S \ --key-schema \ AttributeName=PK,KeyType=HASH \ AttributeName=SK,KeyType=RANGE \ --local-secondary-indexes '[{ "IndexName": "createdAt-index", "KeySchema": [{"AttributeName":"PK","KeyType":"HASH"},{"AttributeName":"createdAt","KeyType":"RANGE"}], "Projection": {"ProjectionType":"ALL"} }]'Interview talking point: “LSIs must be created at table creation time and cannot be added later. They share the partition key and increase write costs because each item is written to all indexes. For flexible access, use Global Secondary Indexes instead.”
Advanced ECS Scenarios
Section titled “Advanced ECS Scenarios”Q1031: How do you implement ECS Service Connect?
Section titled “Q1031: How do you implement ECS Service Connect?”What it is: ECS Service Connect is a built-in service-to-service networking layer that provides stable DNS names and client-side load balancing for tasks.
Why it is used: It replaces custom service discovery with automatic routing inside the cluster.
# Create service with Service Connectaws ecs create-service \ --cluster my-cluster \ --service-name my-service \ --service-connect-configuration '{ "Enabled": true, "Services": [{ "PortName": "web", "ClientAliases": [{"Port": 80}] }] }'Interview talking point: “Service Connect uses a sidecar and requires a Cloud Map namespace. Tasks call each other by service name and portName. For encrypted traffic, enable TLS on the namespace. Cross-namespace routing requires a Service Connect gateway.”
Q1032: How do you use ECS Exec?
Section titled “Q1032: How do you use ECS Exec?”What it is: ECS Exec lets you open an interactive shell into a running container through the ECS control plane using SSM sessions.
Why it is used: It enables secure debugging of tasks in private subnets without SSH or bastions.
# Enable ECS Execaws ecs update-service \ --cluster my-cluster \ --service my-service \ --enable-execute-command
# Execute commandaws ecs execute-command \ --cluster my-cluster \ --container web \ --interactive \ --command "/bin/sh" \ --task task-idInterview talking point: “The service must have enable-execute-command set. The task role needs SSM messages and ssm:UpdateInstanceInformation permissions. It works with Linux containers on Fargate and EC2; some minimal or distroless images cannot run the exec helper.”
Q1033: How do you implement ECS Task Placement Strategies?
Section titled “Q1033: How do you implement ECS Task Placement Strategies?”What it is: ECS task placement strategies determine where tasks run on EC2 container instances, and placement constraints restrict eligible instances.
Why it is used: They control spread, binpacking, and instance selection for EC2 launch type tasks.
{ "placementStrategy": [ { "type": "spread", "field": "attribute:ecs.availability-zone" }, { "type": "binpack", "field": "memory" } ], "placementConstraints": [ { "type": "memberOf", "expression": "attribute:ecs.instance-type == t3.medium" } ]}Interview talking point: “Types include spread (across AZs/instances), binpack (by CPU/memory), and random. Strategies apply in order. Placement strategies do not apply to Fargate tasks. Constraints use memberOf expressions to match instance attributes or distinctInstance rules.”
Q1034: How do you use ECS Capacity Providers?
Section titled “Q1034: How do you use ECS Capacity Providers?”What it is: ECS Capacity Providers link ECS to an Auto Scaling group or to Fargate so ECS can request and manage capacity for pending tasks.
Why it is used: They let ECS scale EC2 instances based on task demand rather than manual ASG scaling.
# Create capacity provideraws ecs create-capacity-provider \ --name my-provider \ --auto-scaling-group-provider '{ "autoScalingGroupArn": "arn:aws:autoscaling:asg", "managedScaling": {"Status": "ENABLED"}, "managedTerminationProtection": "ENABLED" }'Interview talking point: “With managed scaling enabled, ECS scales the ASG up for pending tasks and down when idle. managedTerminationProtection prevents ECS from terminating instances running tasks. Fargate and FARGATE_SPOT are also capacity providers available in service strategies.”
Q1035: How do you configure ECS Task Definitions with Secrets?
Section titled “Q1035: How do you configure ECS Task Definitions with Secrets?”What it is: ECS task definitions can inject secrets from Secrets Manager or SSM Parameter Store and environment files from S3 into containers at task start.
Why it is used: They keep credentials and config out of images and task definition text.
{ "containerDefinitions": [{ "name": "web", "image": "nginx", "secrets": [{ "name": "DB_PASSWORD", "valueFrom": "arn:aws:secretsmanager:region:account:secret:db-password" }], "environmentFiles": [{ "type": "s3", "value": "arn:aws:s3:::my-bucket/env.env" }] }]}Interview talking point: “Secrets are resolved at runtime via valueFrom ARNs; the task execution role needs GetSecretValue or GetParameters permissions. Environment files are fetched from S3 with s3:GetObject. Secrets are not visible in the task definition, while environment variables from files are part of the definition context.”
Advanced EKS Scenarios
Section titled “Advanced EKS Scenarios”Q1036: How do you implement EKS Add-ons?
Section titled “Q1036: How do you implement EKS Add-ons?”What it is: EKS add-ons are AWS-managed Kubernetes add-ons like vpc-cni, kube-proxy, coredns, and EBS CSI driver that EKS installs and upgrades.
Why it is used: They provide version-managed, patched components instead of manual installations.
# Create EKS cluster with add-onaws eks create-cluster \ --name my-cluster \ --resources-vpc-config '{ "subnetIds":["subnet-123"], "securityGroupIds":["sg-123"] }'
# Add addonaws eks create-addon \ --cluster-name my-cluster \ --addon-name vpc-cni
# Update addonaws eks update-addon \ --cluster-name my-cluster \ --addon-name vpc-cni \ --addon-version latestInterview talking point: “Add-on versions must be compatible with the cluster version. The add-on’s controller needs appropriate IAM permissions; some require IRSA or Pod Identity associations. Never edit an EKS-managed add-on with kubectl directly, as EKS may override changes on updates.”
Q1037: How do you use EKS Pod Identity?
Section titled “Q1037: How do you use EKS Pod Identity?”What it is: EKS Pod Identity (and IRSA) lets pods assume IAM roles mapped to a Kubernetes service account, providing temporary AWS credentials.
Why it is used: It grants least-privilege access per workload without static keys.
# Create service account with roleeksctl create iamserviceaccount \ --name my-app \ --namespace default \ --cluster my-cluster \ --attach-role-arn arn:aws:iam::123456789012:role/my-roleInterview talking point: “IRSA uses OIDC federation with the EKS cluster OIDC provider and role trust policies scoped to service accounts. Pod Identity uses the eks-pod-identity-agent add-on with pod identity associations. Both rely on the AWS SDK’s web identity token credential chain.”
Q1038: How do you implement EKS Windows Containers?
Section titled “Q1038: How do you implement EKS Windows Containers?”What it is: EKS supports Windows worker nodes running Windows containers alongside Linux nodes in the same cluster.
Why it is used: It enables running legacy .NET, IIS, and other Windows workloads on EKS.
# Create Windows node groupaws eks create-nodegroup \ --cluster-name my-cluster \ --nodegroup-name windows-nodes \ --instance-types m5n.large \ --ami-type Windows_Server-2022-English-Full-EKS_Optimized-1.0Interview talking point: “Each node group is a single OS family; Windows nodes require Windows Server AMI types matching the desired version. Windows pods have different constraints (no IPv6 in many cases, Linux securityContext fields are ignored). HostProcess and runtimeClass settings may be needed for certain features.”
Q1039: How do you use EKS Fargate Profile?
Section titled “Q1039: How do you use EKS Fargate Profile?”What it is: EKS Fargate profiles select which pods run on Fargate based on namespace and label selectors, eliminating EC2 node management.
Why it is used: They provide serverless compute for specific workloads without provisioning nodes.
# Create Fargate profileaws eks create-fargate-profile \ --cluster-name my-cluster \ --fargate-profile-name my-profile \ --selectors '[ {"namespace": "default"}, {"namespace": "kube-system", "labels": {"env": "production"}} ]'Interview talking point: “Selectors require exact namespace matches; all specified labels must match. DaemonSets do not run on Fargate. kube-system pods need explicit selectors to run on Fargate. Fargate allocates compute in fixed vCPU/memory increments, which affects cost and sizing.”
Q1040: How do you implement EKS Cluster Autoscaler?
Section titled “Q1040: How do you implement EKS Cluster Autoscaler?”What it is: Cluster Autoscaler automatically adjusts the size of EC2 node groups by adding nodes for unschedulable pods and removing idle nodes.
Why it is used: It scales cluster capacity with pod demand to reduce over-provisioning.
apiVersion: apps/v1kind: Deploymentmetadata: name: cluster-autoscaler namespace: kube-systemspec: replicas: 1 template: spec: containers: - name: cluster-autoscaler image: registry.k8s.io/autoscaling/cluster-autoscaler:v1.28.0 command: - ./cluster-autoscaler - --node-group-auto-discovery=asg:tag=k8s.io/cluster-autoscaler/enabledInterview talking point: “It discovers ASGs via tags (such as k8s.io/cluster-autoscaler/enabled) and respects ASG min/max. Scale-down waits for a configured grace period and only removes nodes with evictable pods. Karpenter is an alternative that provisions instances more granularly per pod.”
Advanced CloudFront Scenarios
Section titled “Advanced CloudFront Scenarios”Q1041: How do you configure CloudFront Functions?
Section titled “Q1041: How do you configure CloudFront Functions?”What it is: CloudFront Functions run lightweight JavaScript at viewer-request and viewer-response events to modify requests and responses at the edge.
Why it is used: They handle fast header rewrites, redirects, or normalization with minimal latency and cost.
// viewer-request functionfunction handler(event) { var request = event.request; request.headers['x-custom-header'] = { value: 'test' }; return request;}Interview talking point: “Functions cannot access the network, use async/await, or load external modules. They have size limits and only work on viewer events. For origin events or secrets, use Lambda@Edge instead. They are billed per invocation with a free tier.”
Q1042: How do you implement CloudFront Signed Cookies?
Section titled “Q1042: How do you implement CloudFront Signed Cookies?”What it is: CloudFront signed cookies provide time- and optionally IP-limited access to private content for multiple objects without signing each URL.
Why it is used: They simplify access control for paywalled media or galleries served from CloudFront.
import boto3
cloudfront = boto3.client('cloudfront')
# Create signed cookie policypolicy = { "Statement": [{ "Resource": "https://d123.cloudfront.net/private/*", "Condition": { "DateGreaterThan": {"AWS:EpochTime": 1640000000}, "IpAddress": {"AWS:SourceIp": "192.168.1.0/24"} } }]}
# Generate signed cookiesresponse = cloudfront.sign_cookie( Policy=policy, KeyPairId='key-id', PrivateKey='private-key')Interview talking point: “Signed cookies use a CloudFront key pair (public uploaded, private held by you) and a policy with resource, expiration, and optional conditions. The distribution must allow the CloudFront-Policy, CloudFront-Signature, and CloudFront-Key-Pair-Id cookies. Mismatched resource patterns cause 403 errors.”
Q1043: How do you use CloudFront Origin Groups?
Section titled “Q1043: How do you use CloudFront Origin Groups?”What it is: CloudFront origin groups configure primary and secondary origins with failover based on specified HTTP status codes or connection errors.
Why it is used: They improve resilience by serving from a secondary origin when the primary is unavailable.
# Create origin groupaws cloudfront create-origin-groups \ --origin-groups '{ "Quantity": 1, "Items": [{ "Id": "my-origin-group", "FailoverCriteria": {"StatusCodes": {"Quantity": 2, "Items": [500, 502]}}, "Members": {"Quantity": 2, "Items": [{"OriginId": "primary"}, {"OriginId": "secondary"}]} }] }'Interview talking point: “Failover triggers only on listed status codes (typically 5xx) and connection issues, not on 200 responses containing application errors. Both origins must be compatible with the same behavior. Proper cache/origin request policies are needed for consistent behavior across origins.”
Q1044: How do you implement CloudFront Real-time Logs?
Section titled “Q1044: How do you implement CloudFront Real-time Logs?”What it is: CloudFront real-time logs stream request data to a Kinesis Data Stream as requests occur, with configurable sampling and field selection.
Why it is used: They enable live traffic analysis for anomalies, geo patterns, or rate detection.
# Create real-time log configaws cloudfront create-realtime-log-config \ --name my-logs \ --sampling-rate 50 \ --fields '["timestamp","c-ip","c-country","s-ip","cs-method","sc-status"]' \ --endpoint '{"StreamType":"Kinesis","KinesisStreamConfig":{"RoleArn":"arn:role","StreamArn":"arn:stream"}}'Interview talking point: “Unlike standard access logs, they deliver data in near real time with per-log-line cost. The Kinesis stream must be in the same region and the IAM role must allow PutRecord. Sampling rate ranges from 1 to 100 percent of requests.”
Q1045: How do use CloudFront Field-level Encryption?
Section titled “Q1045: How do use CloudFront Field-level Encryption?”What it is: CloudFront field-level encryption encrypts specific fields in request bodies or query strings at the edge using a public key.
Why it is used: It protects sensitive data like PII or payment details so only the origin holding the private key can decrypt them.
# Create field-level encryption configaws cloudfront create-field-level-encryption-config \ --field-level-encryption-config '{ "CallerReference": "ref", "ContentTypeProfileConfig": {"ForwardWhenContentTypeIsUnknown": true}, "QueryArgProfileConfig": {"ForwardWhenQueryArgProfileIsUnknown": true} }'Interview talking point: “Encrypted fields are packaged into a single result header. It only works for small request bodies and UTF-8 content; file uploads and certain body modifications break it. The origin must decrypt the fields using the corresponding private key.”
Advanced API Gateway Scenarios
Section titled “Advanced API Gateway Scenarios”Q1046: How do you implement API Gateway WebSocket API?
Section titled “Q1046: How do you implement API Gateway WebSocket API?”What it is: API Gateway WebSocket APIs maintain persistent bidirectional connections with routes like $connect, $disconnect, $default, and custom action routes.
Why it is used: They power real-time features such as chat, live dashboards, and IoT messaging without polling.
# Create WebSocket APIaws apigatewayv2 create-api \ --name my-websocket \ --protocol-type WEBSOCKET \ --route-selection-expression '$request.body.action'
# Create routesaws apigatewayv2 create-route \ --api-id api-id \ --route-key $connect
aws apigatewayv2 create-route \ --api-id api-id \ --route-key $defaultInterview talking point: “Route selection is based on a JSON field in the message body (commonly $request.body.action). To send messages to clients, use ApiGatewayManagementApi.post_to_connection with the connectionId. Stale connectionIds return 410 Gone and should be removed on disconnect.”
Q1047: How do you use API Gateway Integration Response Mapping?
Section titled “Q1047: How do you use API Gateway Integration Response Mapping?”What it is: API Gateway integration response mapping transforms backend responses into client-facing responses using mapping templates, typically with Velocity Template Language.
Why it is used: It reshapes payloads, normalizes status codes, or hides backend implementation details.
{ "integrationResponse": { "200": { "responseTemplates": { "application/json": "#set($inputRoot = $input.path('$')){\"statusCode\": 200, \"body\": \"$inputRoot.data\"}" } } }}Interview talking point: “Mapping templates apply per status code and content-type. Proxy integrations (AWS_PROXY) do not support response templates. If no template matches, the raw backend response passes through. VTL expressions like $input.path(’$’) extract data from the backend payload.”
Q1048: How do you implement API Gateway Request Validation?
Section titled “Q1048: How do you implement API Gateway Request Validation?”What it is: API Gateway request validation checks request bodies, headers, and query parameters against a JSON schema before reaching the backend.
Why it is used: It fails fast on malformed requests and reduces invalid traffic to backend services.
# Create request validatoraws apigateway put-request-validator \ --rest-api-id api-id \ --request-validator-name "Validate Body" \ --validate-request-body true \ --validate-request-headers trueInterview talking point: “Validation requires a request model/schema attached to the method. By default, unknown properties pass unless additionalProperties is false. If validation is enabled but no model exists, requests may be rejected. Errors return 400 with details about validation failures.”
Q1049: How do you use API Gateway Cache Invalidation?
Section titled “Q1049: How do you use API Gateway Cache Invalidation?”What it is: API Gateway cache invalidation clears cached responses for a specific stage and set of paths, forcing fresh results before TTL expiry.
Why it is used: It propagates backend updates immediately without waiting for natural cache expiration.
Invalidate cache
Section titled “Invalidate cache”aws apigateway create-invalidation
—rest-api-id api-id
—stage-prod
—paths ’[“/resource/*”]’
Interview talking point: “Invalidation is scoped to a stage and path patterns. It only clears API Gateway’s cache; if CloudFront is in front, its cache must be invalidated separately. Caching only occurs when responses include appropriate Cache-Control headers.”
Q1050: How do you implement API Gateway Usage Plans?
Section titled “Q1050: How do you implement API Gateway Usage Plans?”What it is: API Gateway Usage Plans associate API keys with quota limits and throttle rates for specific API stages.
Why it is used: They meter and rate-limit consumers by tier without modifying backend code.
# Create usage planaws apigateway create-usage-plan \ --name my-plan \ --quota '{"Limit":10000,"Period":"MONTH"}' \ --throttle '{"BurstLimit":100,"RateLimit":50}"
# Create API keyaws apigateway create-api-key \ --name my-key \ --enabled
# Associate with usage planaws apigateway create-usage-plan-key \ --usage-plan-id plan-id \ --key-id key-id \ --key-type API_KEYInterview talking point: “Clients must send the API key in the x-api-key header. Quota is enforced per key and period (day/week/month). Throttle is the burst and rate limit applied per stage. An unassociated key is not throttled by the usage plan.”
Advanced Route 53 Scenarios
Section titled “Advanced Route 53 Scenarios”Q1051: How do you implement Route 53 Resolver?
Section titled “Q1051: How do you implement Route 53 Resolver?”What it is: Route 53 Resolver provides managed DNS for VPCs with inbound and outbound endpoints that link on-premises DNS to private hosted zones.
Why it is used: To resolve hybrid names both ways without intercepting existing corporate DNS traffic.
# Create inbound endpointaws route53resolver create-resolver-endpoint \ --name inbound \ --direction INBOUND \ --security-group-ids sg-123 \ --ip-addresses '[ {"SubnetId":"subnet-1","Ip":"10.0.1.50"}, {"SubnetId":"subnet-2","Ip":"10.0.2.50"} ]'
# Create outbound ruleaws route53resolver create-resolver-rule \ --name corp-rule \ --rule-type FORWARD \ --domain-name corp.example.com \ --target-ips '[{"Ip":"10.0.1.100","Port":53}]'Interview talking point: “Inbound endpoints let on-prem servers query VPC DNS; outbound endpoints plus forwarding rules send VPC queries to on-prem. Each endpoint needs two ENIs in two AZs with UDP and TCP 53 open, and an unassociated resolver rule does nothing.”
Q1052: How do you use Route 53 Traffic Flow?
Section titled “Q1052: How do you use Route 53 Traffic Flow?”What it is: Route 53 Traffic Flow is a visual policy editor that builds weighted, geolocation, latency, and failover routing as reusable versioned policy documents.
Why it is used: To express complex multi-record routing as one document instead of hand-writing record sets per policy.
# Create traffic policyaws route53 create-traffic-policy \ --name my-policy \ --document file://policy.json
# Create traffic policy instanceaws route53 create-traffic-policy-instance \ --name my-instance \ --hosted-zone-id Z123 \ --traffic-policy-id policy-id \ --traffic-policy-version 1Interview talking point: “Each traffic policy instance pins a specific policy version, so editing creates a new version and you must bump or recreate the instance. It costs roughly $50 per month per instance, and geolocation rules need a default or unmatched countries get no answer.”
Q1053: How do you implement Route 53 Health Check Failover?
Section titled “Q1053: How do you implement Route 53 Health Check Failover?”What it is: Route 53 health checks poll endpoints over HTTP, HTTPS, or TCP, or use CloudWatch alarms, to drive DNS failover decisions.
Why it is used: To make DNS routing health-aware so failover records go dark when the primary endpoint dies.
# Create health checkaws route53 create-health-check \ --caller-reference "ref" \ --health-check-config '{ "Type": "HTTPS", "FullyQualifiedDomainName": "example.com", "Port": 443, "ResourcePath": "/health", "RequestInterval": 10, "FailureThreshold": 3 }'Interview talking point: “RequestInterval is 10 or 30 seconds, with 10 costing more, and FailureThreshold sets how many consecutive failures flip the check. Checkers run from AWS edge locations, so your firewall must allowlist them, and failover records require a SetIdentifier.”
Q1054: How do you use Route 53 Alias Records?
Section titled “Q1054: How do you use Route 53 Alias Records?”What it is: Alias records point a DNS name at an AWS resource like an ALB, CloudFront, or S3 website, working even at the zone apex.
Why it is used: To get CNAME-like routing at the apex for AWS resources with no per-query charge.
# Create alias record to ALBaws route53 change-resource-record-sets \ --hosted-zone-id Z123 \ --change-batch '{ "Changes": [{ "Action": "CREATE", "ResourceRecordSet": { "Name": "app.example.com", "Type": "A", "AliasTarget": { "HostedZoneId": "Z2FDTNDATAQYW2", "DNSName": "myalb.elb.amazonaws.com", "EvaluateTargetHealth": true } } }] }'Interview talking point: “Aliases are free, skip the CNAME hop, and must be type A or AAAA with the target’s exact hosted zone ID. Z2FDTNDATAQYW2 is actually CloudFront’s zone ID while ALB zone IDs are region-specific, and a wrong ID fails with InvalidChangeBatch.”
Q1055: How do you implement Route 53 Latency Routing?
Section titled “Q1055: How do you implement Route 53 Latency Routing?”What it is: Latency routing answers DNS queries with the AWS region showing the lowest measured latency to the client, using multiple region-tagged records.
Why it is used: To route users to the closest-performing region for latency-sensitive apps without knowing client location.
# Create latency recordaws route53 change-resource-record-sets \ --hosted-zone-id Z123 \ --change-batch '{ "Changes": [{ "Action": "CREATE", "ResourceRecordSet": { "Name": "example.com", "Type": "A", "SetIdentifier": "us-east-1", "Latency": {"Region": "us-east-1"}, "TTL": 60, "ResourceRecords": [{"Value": "1.2.3.4"}] } }] }'Interview talking point: “Route 53 measures latency from its own edge probes to your regions, not from the client’s country, and each record needs a unique SetIdentifier. Add health checks, otherwise an unhealthy region still answers; keep TTLs consistent across the set.”
Advanced IAM Scenarios
Section titled “Advanced IAM Scenarios”Q1056: How do you implement IAM Access Keys Rotation?
Section titled “Q1056: How do you implement IAM Access Keys Rotation?”What it is: Access key rotation replaces a long-lived IAM access key with a fresh one, then deactivates and deletes the old key.
Why it is used: To limit the blast radius of leaked credentials and satisfy controls demanding regular rotation.
# Create new access keyaws iam create-access-key --user-name john
# Update credentialsaws iam update-access-key \ --access-key-id AKIA... \ --status Inactive
# Delete old keyaws iam delete-access-key --access-key-id AKIA...Interview talking point: “Safe order is create, switch the app, deactivate, verify, then delete, since no rotate-access-key command exists. Users are capped at two access keys, a third raises LimitExceededException, deleted keys cannot be restored, and rotation leaves existing sessions valid until expiry.”
Q1057: How do you use IAM Policy Simulator?
Section titled “Q1057: How do you use IAM Policy Simulator?”What it is: The IAM Policy Simulator evaluates attached policies against an action and resource, reporting allowed, implicitDeny, or explicitDeny via simulate-principal-policy.
Why it is used: To test what a policy actually grants before deploying, instead of debugging denials by trial and error.
# Use IAM Policy Simulator console or API:aws iam simulate-principal-policy \ --policy-source-arn arn:aws:iam::123456789012:user/john \ --action-names "s3:GetObject" \ --resource-arns "arn:aws:s3:::my-bucket/*"Interview talking point: “The source ARN is the user or role, and the simulator walks all its policies including boundaries. explicitDeny from a Deny statement can never be overridden, while implicitDeny can; resource-based policies are not auto-included unless you pass them.”
Q1058: How do you implement IAM Roles Anywhere?
Section titled “Q1058: How do you implement IAM Roles Anywhere?”What it is: IAM Roles Anywhere lets non-AWS workloads assume IAM roles using an X.509 certificate chained to your CA trust anchor.
Why it is used: To give on-premises servers least-privilege AWS access without storing long-lived access keys.
# Create profileaws rolesanywhere create-profile \ --name my-profile \ --role-arns arn:aws:iam::123456789012:role/my-role \ --duration 3600
# Create trust anchoraws rolesanywhere create-trust-anchor \ --name my-trust \ --source '{"Type": "CERTIFICATE_BUNDLE", "CertificateBundle":["cert"]}'Interview talking point: “The chain is trust anchor, then profile defining role ARNs and duration, then CreateSession for temporary credentials. Failures usually mean the cert does not chain to the anchor or lacks clientAuth key usage, or the role trust policy does not allow rolesanywhere:AssumeRole.”
Q1059: How do you use IAM Permission Boundaries?
Section titled “Q1059: How do you use IAM Permission Boundaries?”What it is: A permission boundary is a managed policy ceiling attached to an identity; effective permissions are the intersection of boundary and identity policies.
Why it is used: To delegate policy-attachment rights without letting anyone escalate beyond the boundary’s maximum permissions.
{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": ["s3:*", "ec2:*"], "Resource": "*", "Condition": {"Bool": {"aws:SecureTransport": "true"}} }]}Interview talking point: “A user with AdministratorAccess plus a boundary allowing only s3:* gets only S3, and explicit Deny in the boundary always wins. Every identity in an admin-delegation pattern needs a boundary attached; SCPs are the org-level ceiling while boundaries are the IAM-level one.”
Q1060: How do you implement IAM Session Tags?
Section titled “Q1060: How do you implement IAM Session Tags?”What it is: Session tags are key-value pairs passed on an sts:AssumeRole session and used in policy conditions for attribute-based access control.
Why it is used: To carry context like department or environment on temporary credentials so policies can authorize by attribute.
# Assume role with session tagsresponse = client.assume_role( RoleArn='arn:aws:iam::123456789012:role/my-role', RoleSessionName='session', Tags=[{'Key': 'department', 'Value': 'engineering'}])Interview talking point: “Without sts:TagSession the AssumeRole call fails with AccessDenied rather than silently dropping tags; sessions hold up to 50 tags. Policies match them with aws:PrincipalTag/key, and TransitiveTagKeys keeps tags alive through chained role assumptions.”
Advanced KMS Scenarios
Section titled “Advanced KMS Scenarios”Q1061: How do you implement KMS Key Policies?
Section titled “Q1061: How do you implement KMS Key Policies?”What it is: A KMS key policy is the resource-based policy on the key deciding who can use and administer it.
Why it is used: Because IAM policies alone cannot grant KMS access; the key policy must allow the principal first.
{ "Version": "2012-10-17", "Id": "key-policy", "Statement": [{ "Sid": "Enable IAM User Permissions", "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::123456789012:root"}, "Action": "kms:*", "Resource": "*" }]}Interview talking point: “The default policy grants the account root kms:*, which delegates the rest to IAM; remove that line and IAM policies stop working. Cross-account access needs both the key policy and the grantee account’s IAM to allow, or you get AccessDeniedException despite IAM.”
Q1062: How do you use KMS Grants?
Section titled “Q1062: How do you use KMS Grants?”What it is: A KMS grant delegates specific key operations like Encrypt or Decrypt to a grantee for a limited time without editing the key policy.
Why it is used: To give a service or pipeline temporary, revocable, fine-grained key access.
# Create grantaws kms create-grant \ --key-id key-id \ --grantee-principal arn:aws:iam::123456789012:role/my-role \ --operations Encrypt Decrypt \ --constraints '{"EncryptionContextEquals":{"Department":"IT"}}'Interview talking point: “The grant alone authorizes the operation; the grantee does not also need key policy permission. Grants cannot be modified, only revoked, and are quota-limited per key. S3 SSE-KMS relies on grants to use your CMK, which is why a bare-looking key policy still works.”
Q1063: How do you implement KMS Key Rotation?
Section titled “Q1063: How do you implement KMS Key Rotation?”What it is: KMS rotation replaces key material automatically each year or on demand, while the key ID and ARN stay stable.
Why it is used: To refresh key material without changing any application references to the key.
# Enable automatic key rotationaws kms enable-key-rotation \ --key-id key-id
# Manual key rotationaws kms rotate-key-on-demand \ --key-id key-idInterview talking point: “Rotation does not re-encrypt existing data: old ciphertext stays encrypted under previous material until you re-encrypt it. Automatic rotation supports only symmetric customer-managed keys, and enabling it on an asymmetric key returns UnsupportedOperationException.”
Q1064: How do you use KMS Custom Key Stores?
Section titled “Q1064: How do you use KMS Custom Key Stores?”What it is: A custom key store backs KMS keys with a CloudHSM cluster or an external key manager instead of AWS’s HSM fleet.
Why it is used: To satisfy compliance requiring key material to live in hardware you control.
# Create custom key store (CloudHSM or external)aws kms create-custom-key-store \ --custom-key-store-name my-cks \ --cloud-hsm-cluster-id cluster-id \ --key-store-password passwordInterview talking point: “Once a key is bound to a custom key store it cannot be moved; you must create a new key and re-encrypt. If the HSMs go down, every encrypt and decrypt fails with CustomKeyStoreInvalidStateException until they recover.”
Q1065: How do you implement KMS Multi-Region Keys?
Section titled “Q1065: How do you implement KMS Multi-Region Keys?”What it is: Multi-Region keys replicate one KMS key into other regions so ciphertext encrypted in one region decrypts in another.
Why it is used: For global and disaster-recovery workloads that need one key identity across regions.
# Create multi-region keyaws kms create-key \ --origin AWS_KMS \ --multi-region \ --description "Multi-region key"
# Replicate key to another regionaws kms replicate-key \ --key-id key-id \ --replica-region us-west-2Interview talking point: “Replicas share key material and an ID prefix, but each region has its own key policy, aliases, and rotation settings; rotation must be enabled per region and does not sync. Only services explicitly supporting multi-region keys accept them, and replicate-key on a normal key fails with InvalidKeyId.”
Advanced CloudFormation Scenarios
Section titled “Advanced CloudFormation Scenarios”Q1066: How do you use CloudFormation Drift Detection?
Section titled “Q1066: How do you use CloudFormation Drift Detection?”What it is: CloudFormation drift detection compares live stack resource state against the template and reports IN_SYNC, MODIFIED, DELETED, or NOT_CHECKED.
Why it is used: To find out-of-band console or script changes so the stack remains trustworthy as source of truth.
# Detect driftaws cloudformation detect-stack-drift \ --stack-name my-stack
# Get drift statusaws cloudformation describe-stack-drift-detection-status \ --stack-id stack-idInterview talking point: “Detection runs asynchronously and is read-only; it never fixes anything. Resources without support report NOT_CHECKED or NOT_SUPPORTED, and correcting drift means running update-stack with the current template, which overwrites the drifted values.”
Q1067: How do you implement CloudFormation StackSets?
Section titled “Q1067: How do you implement CloudFormation StackSets?”What it is: StackSets deploy one CloudFormation template across many accounts and regions using self-managed or Organizations-backed service-managed permissions.
Why it is used: To roll out baseline infrastructure uniformly across an entire organization from one definition.
# Create stack setaws cloudformation create-stack-set \ --stack-set-name my-stackset \ --template-body file://template.yaml \ --permission-model SELF_MANAGED
# Add stacksaws cloudformation create-stack-instances \ --stack-set-name my-stackset \ --accounts '["123456789012"]' \ --regions '["us-east-1"]'Interview talking point: “SELF_MANAGED requires pre-created AWSCloudFormationStackSetAdministrationRole and execution roles in target accounts, the usual AccessDenied cause. SERVICE_MANAGED targets OUs through Organizations; operation-preferences control MaxConcurrentAccounts and FailureTolerance, and each operation must be polled via describe-stack-set-operation.”
Q1068: How do you use CloudFormation Nested Stacks?
Section titled “Q1068: How do you use CloudFormation Nested Stacks?”What it is: Nested stacks let a parent template declare child stacks as AWS::CloudFormation::Stack resources with TemplateURL and Parameters.
Why it is used: To reuse one VPC or network template across environments under a single orchestration point.
# Parent templateAWSTemplateFormatVersion: '2010-09-09'Resources: VPCStack: Type: AWS::CloudFormation::Stack Properties: TemplateURL: https://s3.amazonaws.com/templates/vpc.yaml Parameters: VPCCidr: 10.0.0.0/16Interview talking point: “TemplateURL must be an S3 HTTPS URL; a local file path fails. Child outputs come through Fn::GetAtt on the nested resource, nesting depth caps around five levels, and deleting the parent deletes its nested stacks.”
Q1069: How do you implement CloudFormation Custom Resources?
Section titled “Q1069: How do you implement CloudFormation Custom Resources?”What it is: Custom resources let CloudFormation call external code, typically a Lambda, to provision things CFN does not natively support.
Why it is used: To manage third-party or dynamic resources as first-class stack resources with rollback semantics.
Resources: CustomResource: Type: AWS::CloudFormation::WaitCondition Properties: Handle: !Ref WaitHandle Timeout: "PT5M"
WaitHandle: Type: AWS::CloudFormation::WaitConditionHandleInterview talking point: “The modern contract is AWS::CloudFormation::CustomResource with a ServiceToken; WaitCondition is the legacy polling pattern. Your code must POST success and a PhysicalResourceId back to the ResponseURL within an hour or the stack hangs in CREATE_IN_PROGRESS, and a synchronous return alone is not enough.”
Q1070: How do use CloudFormation cfn-lint?
Section titled “Q1070: How do use CloudFormation cfn-lint?”What it is: cfn-lint is a community linter that checks CloudFormation templates against published resource schemas before deployment.
Why it is used: To catch typos, wrong property names, and missing parameters in CI instead of cryptic create-stack errors.
# Install cfn-lintpip install cfn-lint
# Validate templatecfn-lint template.yaml
# Check specific rulescfn-lint template.yaml --template-param-file params.jsonInterview talking point: “It runs hundreds of rules you can filter with —ignore-checks, and —template-param-file enables parameter validation. It catches wrong property spelling that validate-template misses, but it cannot judge IAM permissions; that belongs to Access Analyzer and the policy simulator.”
Advanced CDK Scenarios
Section titled “Advanced CDK Scenarios”Q1071: How do you implement CDK Pipeline?
Section titled “Q1071: How do you implement CDK Pipeline?”What it is: CDK Pipelines is a self-mutating CodePipeline construct defined in your CDK app that builds and deploys itself.
Why it is used: To get deploy-on-commit CI/CD without hand-writing CodePipeline stage definitions.
from aws_cdk import pipelines
class MyPipelineStack(core.Stack): def __init__(self, scope, id, **kwargs): super().__init__(scope, id, **kwargs)
pipeline = pipelines.CodePipeline( self, "Pipeline", synth=pipelines.ShellStep("Synth", commands=["npm ci", "cdk synth"] ) )
pipeline.add_stage(ApplicationStage(self, "Deploy"))Interview talking point: “The synth step must run cdk synth and produce the cdk.out cloud assembly in an artifact, or the pipeline fails with a SynthError. A fresh environment needs cdk bootstrap first, otherwise you get “this stack uses assets, so the toolkit stack must be deployed”.”
Q1072: How do you use CDK Aspects?
Section titled “Q1072: How do you use CDK Aspects?”What it is: CDK Aspects are visitor objects that traverse the synthesized construct tree to validate or mutate resources at synth time.
Why it is used: To enforce org-wide tagging, encryption, and naming rules across every stack without repeating checks.
from aws_cdk import Aspects
class MyAspect: def visit(self, node): # Check and warn pass
Aspects.of(stack).add(MyAspect())Interview talking point: “Aspects run after construction and before template emission, so throwing an error fails the synth and acts as a compliance gate. They only see synthesized objects, never runtime values or AWS APIs; cdk-nag is the maintained rule pack built on them.”
Q1073: How do you implement CDK Custom Constructs?
Section titled “Q1073: How do you implement CDK Custom Constructs?”What it is: A custom construct is a reusable class composing multiple L2 constructs behind a props-driven API.
Why it is used: To package a VPC plus its groups and routes as one reviewed, tested unit reused across stacks.
from aws_cdk import core, aws_ec2 as ec2
class MyVPC(core.Construct): def __init__(self, scope, id, cidr="10.0.0.0/16"): super().__init__(scope, id)
self.vpc = ec2.Vpc(self, "VPC", cidr=cidr)Interview talking point: “Construct IDs must be unique within a scope or synth fails with “there is already a Construct with name”. Escape hatch L1 properties like CfnVpc when L2 does not expose them, and the import moved from aws_cdk.core in v1 to constructs.Construct in v2.”
Q1074: How do you use CDK Docker Images?
Section titled “Q1074: How do you use CDK Docker Images?”What it is: ContainerImage.from_docker_image_asset builds a local Dockerfile directory and pushes the image to the CDK assets ECR repository during deploy.
Why it is used: To deploy ECS or Fargate services where CDK builds and versions your application image automatically.
from aws_cdk import aws_ecs as ecs
container_image = ecs.ContainerImage.from_docker_image_asset( self, "Image", directory="./app")Interview talking point: “Docker must be available on the machine running synth or deploy, and cdk bootstrap must have created the assets repository or you get asset upload errors. CDK caches by asset hash so unchanged Dockerfiles are not rebuilt; use from_ecr_repository when builds happen separately.”
Q1075: How do you implement CDK Integrations?
Section titled “Q1075: How do you implement CDK Integrations?”What it is: CDK integrations wire services together in one construct, such as apigateway.LambdaRestApi attaching a Lambda handler to an API.
Why it is used: To expose a Lambda over HTTP in a few lines without hand-wiring permissions and methods.
# Lambda integration with API Gatewayapi = apigateway.LambdaRestApi( self, "API", handler=handler, proxy=False)
api.root.add_method("GET")Interview talking point: “With proxy false you add methods explicitly, while proxy true creates a catch-all passing everything to one Lambda. CDK adds the lambda:InvokeFunction permission itself, and for production control over validation and caching you switch to RestApi with LambdaIntegration per method.”
Advanced Terraform Scenarios
Section titled “Advanced Terraform Scenarios”Q1076: How do you use Terraform Remote Backend?
Section titled “Q1076: How do you use Terraform Remote Backend?”What it is: A Terraform S3 backend stores state in S3 with an optional DynamoDB table for locking instead of a local tfstate file.
Why it is used: To share state across a team and prevent concurrent applies from corrupting it.
terraform { backend "s3" { bucket = "my-terraform-state" key = "prod/terraform.tfstate" region = "us-east-1" dynamodb_table = "terraform-lock" }}Interview talking point: “The backend block takes only literals; no variables or interpolation, so CI uses empty backend blocks plus -backend-config flags. DynamoDB provides the state lock, the bucket needs versioning and encryption since state holds secrets, and adding a backend later requires terraform init -migrate-state.”
Q1077: How do you implement Terraform Modules?
Section titled “Q1077: How do you implement Terraform Modules?”What it is: Terraform modules are reusable folders of tf files exposing variables, resources, and outputs, called with a module block.
Why it is used: To reuse one VPC definition across dev, staging, and prod with different inputs and pinned versions.
variable "cidr" {}variable "name" {}
resource "aws_vpc" "main" { cidr_block = var.cidr tags = { Name = var.name }}
output "vpc_id" { value = aws_vpc.main.id}Interview talking point: “Resources inside a module are private, so callers reach them only through outputs, and module names are their own namespace. Pin git sources with a ref tag, count and for_each on module calls work since 0.13, and “Module not installed” just means run terraform init.”
Q1078: How do you use Terraform Workspaces?
Section titled “Q1078: How do you use Terraform Workspaces?”What it is: Terraform workspaces are named state environments for the same configuration, switching which tfstate file a run uses.
Why it is used: To run identical code against separate dev and prod states with workspace-driven value differences.
# Create workspaceterraform workspace new dev
# Switch workspaceterraform workspace select dev
# Use workspace in configresource "aws_instance" "example" { ami = "ami-12345" instance_type = terraform.workspace == "prod" ? "t3.large" : "t3.micro"}Interview talking point: “Workspaces separate state, not infrastructure: they share backend credentials and provider config, so real environments should use separate backend keys or accounts. terraform.workspace returns default when unset, and the canonical pattern is a ternary selecting instance type or region per workspace.”
Q1079: How do you implement Terraform Import?
Section titled “Q1079: How do you implement Terraform Import?”What it is: terraform import registers an existing live resource into state at a declared address so Terraform can manage it.
Why it is used: To adopt legacy or manually built infrastructure into code without recreating it.
# Import existing resourceterraform import aws_instance.example i-12345
# Import with configterraform import -var-file=dev.tfvars aws_s3_bucket.example my-bucketInterview talking point: “Import only fills state, so the config block must already exist or you get “resource address does not exist in the configuration”. You must then plan and apply to reconcile attributes, since import never diffs your files, and it needs read-only credentials for that resource type.”
Q1080: How do you use Terraform for_each?
Section titled “Q1080: How do you use Terraform for_each?”What it is: for_each creates one resource instance per map key or string set, each with a stable keyed state address.
Why it is used: To build several configured instances with per-item attributes through each.key and each.value.
# Multiple instancesresource "aws_instance" "server" { for_each = toset(["web1", "web2", "web3"])
ami = "ami-12345" instance_type = "t3.micro" tags = { Name = "server-${each.value}" }}Interview talking point: “Unlike count, for_each keys are stable, so removing one key destroys exactly that instance instead of reindexing everything. Values must be known at plan time and be a map or set; wrap lists with toset() or you get Invalid for_each argument.”
Advanced CodePipeline Scenarios
Section titled “Advanced CodePipeline Scenarios”Q1081: How do you implement Manual Approval?
Section titled “Q1081: How do you implement Manual Approval?”What it is: A CodePipeline manual approval action pauses the pipeline until a person approves or rejects it in the console.
Why it is used: To insert a human governance gate between stages, especially before production releases.
# Create approval actionaws codepipeline create-pipeline \ --pipeline '{ "stages": [ { "name": "Deploy", "actions": [{ "name": "Approval", "actionTypeId": {"category":"Approval","owner":"AWS","provider":"Manual","version":"1"} }] } ] }'Interview talking point: “The action type must be category Approval with provider Manual and owner AWS, version 1, or create fails validation. Each approval in a stage is checked separately, rejection fails the pipeline rather than skipping it, and programmatic approval uses put-approval-result gated by codepipeline:PutApprovalResult.”
Q1082: How do you use CodePipeline Variables?
Section titled “Q1082: How do you use CodePipeline Variables?”What it is: CodePipeline variables are execution-time values, either built-ins like #{codepipeline.PipelineExecutionId} or action-defined namespaces referenced as #{namespace.name}.
Why it is used: To pass dynamic values like execution IDs or build output versions between pipeline stages.
env: variables: BUILD_ID: "#{codepipeline.PipelineExecutionId}"Interview talking point: “The big gotcha: a build publishes values through buildspec env.exported-variables, not plain env.variables, or the reference never resolves. Variables are strings, and action variables only resolve in actions after the defining one; you cannot reference a later stage.”
Q1083: How do you implement Cross-Region Actions?
Section titled “Q1083: How do you implement Cross-Region Actions?”What it is: Cross-region actions let one pipeline deploy into other regions, with artifacts copied to an artifact store bucket in the target region.
Why it is used: To deploy the same build to several regions from one pipeline instead of one pipeline per region.
# Add action with different regionaws codepipeline create-pipeline \ --pipeline '{ "stages": [ { "name": "Deploy", "actions": [{ "name": "Deploy", "actionTypeId": {"category":"Deploy","owner":"AWS","provider":"CloudFormation","version":"1"}, "configuration": {"Region": "us-west-2"} }] } ] }'Interview talking point: “The target region needs an existing artifact store bucket plus KMS key; CodePipeline does not create them, which is the usual bootstrapping failure. The pipeline service role needs s3:PutObject there, and the action carries its own Region setting while the pipeline stays put.”
Q1084: How do you use CodePipeline Webhooks?
Section titled “Q1084: How do you use CodePipeline Webhooks?”What it is: CodePipeline webhooks expose an HTTPS endpoint that external Git systems POST to in order to trigger a pipeline.
Why it is used: To wire GitHub, GitLab, or an in-house repo into a pipeline without polling.
# Create webhookaws codepipeline create-webhook \ --name my-webhook \ --pipeline-name my-pipeline \ --filters '[{"jsonPath":"$.ref","matchEquals":"refs/heads/main"}]'Interview talking point: “Authentication matters: GITHUB_HMAC signs with a secret you also set in GitHub, IP allowlists CIDRs, and UNAUTHENTICATED lets anyone with the URL trigger you. A wrong secret shows up as silent non-firing, the endpoint URL is region-specific, and multiple JSON filters are ANDed.”
Q1085: How do you implement Lambda Deployment Actions?
Section titled “Q1085: How do you implement Lambda Deployment Actions?”What it is: A Lambda deploy action invokes your function as a custom deploy step, passing input artifacts and user parameters in the job event.
Why it is used: To run arbitrary custom deployment logic inside a pipeline without building a provider plugin.
# Lambda deploymentaws codepipeline create-pipeline \ --pipeline '{ "stages": [ { "name": "Deploy", "actions": [{ "name": "DeployLambda", "actionTypeId": {"category":"Deploy","owner":"AWS","provider":"Lambda","version":"1"}, "configuration": {"FunctionName": "my-function"} }] } ] }'Interview talking point: “Your function must call put_job_success_result or put_job_failure_result with the jobId, or the action stays running forever; that is the top failure mode. It downloads artifacts using the temporary data.artifactCredentials in the event, and the pipeline role needs lambda:InvokeFunction.”
Advanced EventBridge Scenarios
Section titled “Advanced EventBridge Scenarios”Q1086: How do you implement EventBridge Pipes?
Section titled “Q1086: How do you implement EventBridge Pipes?”What it is: EventBridge Pipes connects one source like SQS, Kinesis, or DynamoDB streams to a target with filtering and optional enrichment.
Why it is used: To replace hand-rolled pollers with a declarative point-to-point event pipeline.
# Create pipeaws eventsv2 create-pipe \ --name my-pipe \ --source kinesis \ --source-configuration '{ "KinesisStreamConfiguration": {"StreamArn": "arn:aws:kinesis:stream/my-stream"} }' \ --target lambda \ --target-configuration '{ "LambdaFunctionConfiguration": {"FunctionArn": "arn:aws:lambda:function:my-function"} }'Interview talking point: “The CLI verb is aws events create-pipe; there is no eventsv2 prefix. Source and target must be full ARNs, not bare names, and a —role-arn trusting pipes.amazonaws.com is required; a silent pipe is almost always a bad role or filter.”
Q1087: How do you use EventBridge Schema Registry?
Section titled “Q1087: How do you use EventBridge Schema Registry?”What it is: The EventBridge schema registry stores event schemas so consumers can inspect payload shapes and generate typed code bindings.
Why it is used: To standardize event contracts between producers and consumers for better developer experience.
# Discover schemaaws eventschemas discover-schemas \ --registry-name my-registry \ --event-source kinesis
# Create schemaaws eventschemas create-schema \ --registry-name my-registry \ --schema-name my-schema \ --content file://schema.jsonInterview talking point: “Schemas discovered on a bus land automatically in the aws.events registry, while custom registries need create-registry first. create-schema takes sample JSON via file:// and defaults to OpenApi3 rather than JSONSchemaDraft4, and put-code-binding with get-code-binding generate Python, TypeScript, or Java classes.”
Q1088: How do you implement EventBridge Archive?
Section titled “Q1088: How do you implement EventBridge Archive?”What it is: EventBridge archives capture events matching a pattern for a retention window so they can be replayed to the bus later.
Why it is used: To recover from consumer bugs by replaying missed events and to audit what happened.
# Create archiveaws events create-archive \ --archive-name my-archive \ --event-pattern '{"source":["aws.ec2"]}' \ --retention-days 7
# Replay from archiveaws events replay \ --replay-name my-replay \ --event-archive-arn archive-arn \ --event-start-time 2024-01-01Interview talking point: “Archives only capture events that arrive after the archive exists, with retention from 1 to 365 days. Replay requires both start and end times, redelivers to the bus’s current rules and targets, and its progress is watched through describe-replay.”
Q1089: How do use EventBridge Custom Event Bus?
Section titled “Q1089: How do use EventBridge Custom Event Bus?”What it is: A custom event bus is a separate EventBridge bus isolating one domain’s events and serving as the cross-account integration point.
Why it is used: To namespace events per team or bounded context and to fan out between accounts.
# Create custom event busaws events create-event-bus \ --name my-event-bus
# Put eventsaws events put-events \ --entries '[{ "Source": "myapp.orders", "DetailType": "OrderCreated", "Detail": "{\"orderId\": \"123\"}" }]'Interview talking point: “put-events defaults to the default bus, so omitting EventBusName is why a custom-bus rule never fires. Events are capped at 256KB with 10 entries per call, cross-account delivery needs a rule role plus put-permission on the receiving bus, and busy buses cannot be deleted.”
Q1090: How do you implement EventBridge Dead Letter Queue?
Section titled “Q1090: How do you implement EventBridge Dead Letter Queue?”What it is: An EventBridge dead-letter queue captures events a rule matched but the target repeatedly failed to deliver, storing them in SQS or SNS.
Why it is used: To prevent silent event loss and give you something to inspect and replay after fixing the target.
# Configure target with DLQaws events put-targets \ --rule my-rule \ --targets '[{ "Id": "target", "Arn": "arn:aws:lambda:function:my-function", "DeadLetterConfig": {"Arn": "arn:aws:sqs:queue:dlq"} }]'Interview talking point: “DeadLetterConfig accepts an SQS queue or SNS topic ARN, and deliveries retry per the target RetryPolicy before landing there. Nothing auto-redrives; you must put-events the rescued message yourself, and the DLQ needs sqs:SendMessage or events vanish even with a DLQ configured.”
Advanced Step Functions Scenarios
Section titled “Advanced Step Functions Scenarios”Q1091: How do you implement Step Functions Wait for Callback?
Section titled “Q1091: How do you implement Step Functions Wait for Callback?”What it is: waitForTaskToken pauses a Step Functions task and passes a token to an external process that must call SendTaskSuccess or SendTaskFailure.
Why it is used: To build human-in-the-loop approvals and long-running external workflows inside a state machine.
{ "WaitForTaskToken": { "Type": "WaitForTaskToken", "Resource": "arn:aws:states:::lambda:invoke.waitForTaskToken", "Parameters": { "FunctionName": "my-function", "Payload": { "token.$": "$$.Task.Token", "input.$": "$" } }, "Next": "NextStep" }}Interview talking point: “The payload must include token.$ set to $$.Task.Token, and the callback needs states:SendTaskSuccess or SendTaskFailure on the caller’s role. Forget the callback and the state hangs until its timeout, which defaults to roughly 115 days.”
Q1092: How do you use Step Functions Map State?
Section titled “Q1092: How do you use Step Functions Map State?”What it is: The Map state runs a processor once per item in an input array, optionally in parallel up to MaxConcurrency.
Why it is used: To fan out per-item processing across thousands of records inside one state machine definition.
{ "Map": { "Type": "Map", "ItemsPath": "$.items", "ItemProcessor": { "Processor": { "Type": "Task", "Resource": "arn:aws:states:::lambda:invoke", "Parameters": { "FunctionName": "my-function", "Payload": { "item.$": "$$" } } } }, "End": true }}Interview talking point: “The current schema is ItemProcessor.Processor; older machines use Iterator. Inline Maps cap around 40 concurrent iterations on small lists, while Distributed Map with an S3 ItemReader handles large fan-outs and emits a MapRun ID per iteration. Put Retry and Catch inside the processor so one bad item does not kill the batch.”
Q1093: How do you implement Step Functions Choice State?
Section titled “Q1093: How do you implement Step Functions Choice State?”What it is: A Choice state branches an execution by comparing input fields with operators like StringEquals or NumericGreaterThan, with an optional Default.
Why it is used: To express branch logic declaratively in the machine instead of inside a Lambda.
{ "Choice": { "Type": "Choice", "Choices": [ { "Variable": "$.status", "StringEquals": "success", "Next": "SuccessState" }, { "Variable": "$.status", "StringEquals": "failed", "Next": "FailureState" } ], "Default": "DefaultState" }}Interview talking point: “Choices evaluate in order and the first match wins; with no match and no Default the execution errors. Operators are type-sensitive, so StringEquals on a number silently never matches, and Variable is JSONPath; forget the $. prefix and you compare the whole input.”
Q1094: How do you use Step Functions Intrinsic Functions?
Section titled “Q1094: How do you use Step Functions Intrinsic Functions?”What it is: Step Functions intrinsic functions like States.Format, States.Array, and States.JsonToString transform payloads without invoking a Lambda.
Why it is used: To do string, array, and JSON munging in-machine, cheaper and faster than a Lambda per transform.
{ "Comment": "Using intrinsic functions", "States": { "Merge": { "Type": "Pass", "Parameters": { "combined.$": "States.Array($.arr1, $.arr2)" }, "End": true } }}Interview talking point: “They are only valid in keys ending with .$, specifically Parameters, ResultSelector, and ItemSelector, and you may nest functions but not arbitrary JSONPath inside them. Bad syntax fails at update with Invalid state machine definition.”
Q1095: How do you implement Step Functions Error Handling?
Section titled “Q1095: How do you implement Step Functions Error Handling?”What it is: Step Functions handles errors with Retry blocks carrying ErrorEquals, interval, max attempts, and backoff, plus Catch routing to a fallback state.
Why it is used: To retry transient failures like throttles with backoff and route permanent failures to a compensation path.
{ "TryCatch": { "Type": "Parallel", "Branches": [ { "StartAt": "MainTask", "States": { "MainTask": { "Type": "Task", "Resource": "arn:aws:states:::lambda:invoke", "End": true } } } ], "Catch": [{ "ErrorEquals": ["States.ALL"], "Next": "ErrorHandler" }], "End": true }}Interview talking point: “Retry Lambda.TooManyRequestsException but usually not business failures; States.ALL is the catch-all. A Catch without ResultPath replaces the input with the error object, so set ResultPath like $.errorInfo or downstream states will see the error instead of your data.”
Advanced Kinesis Scenarios
Section titled “Advanced Kinesis Scenarios”Q1096: How do you implement Kinesis Data Analytics?
Section titled “Q1096: How do you implement Kinesis Data Analytics?”What it is: Kinesis Data Analytics runs streaming SQL or managed Flink over Kinesis or Kafka streams with checkpointing and windowed aggregation.
Why it is used: To compute rolling aggregates and anomaly thresholds in real time without managing a Flink cluster.
# Create applicationaws kinesisanalyticsv2 create-application \ --application-name my-analytics \ --runtime FLINK_1_11 \ --service-execution-role-arn role-arn \ --application-code "SELECT * FROM SOURCE_SQL_STREAM_001"Interview talking point: “The SQL runtime is the legacy path; FLINK is the production one, and retired runtime versions are rejected with ValidationException. This is a long-running job priced by KPU, not an event-driven function; for cheap near-real-time, Firehose plus Athena is the alternative.”
Q1097: How do you use Kinesis Enhanced Fan-out?
Section titled “Q1097: How do you use Kinesis Enhanced Fan-out?”What it is: Enhanced Fan-Out registers each consumer for its own dedicated 2MB/s per shard read pipe instead of sharing the pool.
Why it is used: For several consumers that all need fast, independent reads without throttling each other.
# Use enhanced fan-out consumerkinesis = boto3.client('kinesis')
shard_iterator = kinesis.get_shard_iterator( StreamName='my-stream', ShardId='shard-000', ShardIteratorType='LATEST')['ShardIterator']
# Register consumerkinesis.register_stream_consumer( StreamARN='arn:aws:kinesis:stream/my-stream', ConsumerName='my-consumer')Interview talking point: “Standard reads share 5 GetRecords calls per second and 2MB per shard across consumers; EFO gives each consumer the full 2MB/s. Registration is asynchronous, so subscribing while CREATING raises ResourceInUseException, and EFO bills per consumer-hour; reserve it for a few important consumers.”
Q1098: How do you implement Kinesis Scaling?
Section titled “Q1098: How do you implement Kinesis Scaling?”What it is: Kinesis shards define capacity at 1MB/s write and 2MB/s read each; split-shard subdivides hash ranges and merge-shards combines them.
Why it is used: To grow a hot stream or shrink idle capacity, since you pay per shard-hour.
# Split shardaws kinesis split-shard \ --stream-name my-stream \ --shard-to-split shard-id-000 \ --new-starting-hash-key 170141183460469231731687303715884105728
# Merge shardsaws kinesis merge-shards \ --stream-name my-stream \ --shard-to-merge shard-id-000 \ --adjacent-shard-to-merge shard-id-001Interview talking point: “Merges require adjacent shards or you get InvalidArgumentException, and both operations are async. After a split, historical records live in the parent shards, so reading children from TRIM_HORIZON skips pre-split data; that is the classic “where did my data go” trap.”
Q1099: How do you use Kinesis Connector Factory?
Section titled “Q1099: How do you use Kinesis Connector Factory?”What it is: The Kinesis toolchain is the KPL producer library plus Firehose delivery streams; the old EMR Connector Factory is deprecated.
Why it is used: To batch efficiently on the client and land analytics-ready data in S3 without running EMR.
# Use Kinesis Producer Library (KPL)# Or use Kinesis Data Firehose with transformationaws firehose create-delivery-stream \ --delivery-stream-name my-stream \ --s3-destination-configuration '{ "RoleARN": "role-arn", "BucketARN": "arn:aws:s3:::bucket" }'Interview talking point: “KPL is free and its aggregation lowers per-record KDS cost, while Firehose buffers by default up to about 300 seconds or 128MB, so delivery is near-real-time, not instant. Use delivery-stream-type KinesisStreamAsSource to read a stream instead of DirectPut.”
Q1100: How do you implement Kinesis Metrics Monitoring?
Section titled “Q1100: How do you implement Kinesis Metrics Monitoring?”What it is: Enhanced Kinesis metrics expose per-shard CloudWatch metrics like IteratorAgeMilliseconds and throughput-exceeded counts, disabled by default.
Why it is used: To spot hot shards and consumer lag that stream-level aggregates hide.
# Enable enhanced metricsaws kinesis enhance-metrics \ --stream-name my-stream \ --shard-level-metrics "IncomingBytes,OutgoingBytes,IteratorAgeMilliseconds"Interview talking point: “The real CLI verb is enable-enhanced-monitoring, not enhance-metrics; it adds shard-level metrics and disable-enhanced-monitoring removes them, at the cost of many extra CloudWatch metrics. IteratorAgeMilliseconds is the key lag signal, and shard-level WriteProvisionedThroughputExceeded tells you which shard to split.”
Additional Interview Questions 1101-1200
Section titled “Additional Interview Questions 1101-1200”Q1101: How do you implement SQS Delay Queues?
Section titled “Q1101: How do you implement SQS Delay Queues?”What it is: SQS delay queues apply a default DelaySeconds of 0 to 900 seconds to every message; a per-message DelaySeconds overrides it.
Why it is used: To schedule later work, like a reminder five minutes after signup, without a scheduler or cron.
sqs.create_queue( QueueName='delayed-queue', Attributes={'DelaySeconds': '300'})Interview talking point: “Delay applies when a message is put, and a per-message DelaySeconds overrides the queue default, up to 900 seconds total. Long polling wait is a separate knob. In FIFO, if a batch contains a delayed message, the whole batch waits.”
Q1102: How do you use SQS Dead Letter Queues?
Section titled “Q1102: How do you use SQS Dead Letter Queues?”What it is: A second queue that receives messages after they hit maxReceiveCount, configured through the source queue RedrivePolicy attribute.
Why it is used: To separate poison messages from the live queue so consumers are not blocked, leaving a place to inspect and requeue.
# Configure DLQsqs.set_queue_attributes( QueueUrl='https://sqs.../main-queue', Attributes={ 'RedrivePolicy': json.dumps({ 'deadLetterTargetArn': 'arn:aws:sqs:...:dlq', 'maxReceiveCount': 5 }) })Interview talking point: “Receives count, not processing failures: a message that is received and processed successfully but never deleted still counts toward maxReceiveCount. The DLQ must be in the same account and region and match the source type, standard or FIFO. Tune maxReceiveCount too low and transient blips become false positives.”
Q1103: How do you implement SNS Message Filtering?
Section titled “Q1103: How do you implement SNS Message Filtering?”What it is: SNS subscription filtering gives each subscriber a FilterPolicy of JSON conditions on message attributes, so only matching messages are delivered.
Why it is used: To feed many consumers from one topic without each receiving everything, making event routing cheaper and cleaner.
# Subscribe with filtersns.subscribe( TopicArn=topic_arn, Protocol='lambda', NotificationEndpoint=func_arn, FilterPolicy={'eventType': ['order_created', 'order_updated']})Interview talking point: “The filter matches message attributes, which must be set at publish time; filtering on eventType with no matching attribute means no delivery. Multiple values in an array are OR, different keys are AND. Set FilterPolicyScope to MessageBody to match body content, and policies apply per subscription, not per topic.”
Q1104: How do you use SNS Message FIFO?
Section titled “Q1104: How do you use SNS Message FIFO?”What it is: An SNS FIFO topic delivers messages exactly once and in order to FIFO SQS subscribers, using MessageGroupId and deduplication IDs.
Why it is used: For ordered, deduplicated event fan-out where standard SNS at-least-once unordered delivery is unacceptable.
# Create FIFO topicsns.create_topic( Name='my-topic.fifo', Attributes={ 'FifoTopic': 'true', 'ContentBasedDeduplication': 'true' })Interview talking point: “FIFO topics can only subscribe FIFO queues; standard queues, email, HTTP, SMS, and mobile push are rejected with InvalidParameter. MessageGroupId is required per message, and with ContentBasedDeduplication duplicates within a 5-minute window are dropped. Throughput is roughly 300 messages per second base, far below standard topics.”
Q1105: How do you implement SQS Long Polling?
Section titled “Q1105: How do you implement SQS Long Polling?”What it is: Long polling holds the ReceiveMessage connection open up to 20 seconds when the queue is empty, cutting empty polls and API calls.
Why it is used: To cut polling cost and latency by waiting instead of hammering ReceiveMessage and getting empty responses.
# Receive with long pollingresponse = sqs.receive_message( QueueUrl=queue_url, MaxNumberOfMessages=10, WaitTimeSeconds=20)Interview talking point: “You can set the wait per call or as the queue default ReceiveMessageWaitTimeSeconds, capped at 20 seconds, and the per-call value wins. Every receive must long poll or one short poll returns immediately. A code path passing WaitTimeSeconds 0 overrides a queue set to 20.”
Q1106: How do you use SQS Message Attributes?
Section titled “Q1106: How do you use SQS Message Attributes?”What it is: Key-value metadata (String, Number, Binary, String.Array) attached to a SendMessage call, inspectable by SNS filters and Lambda without parsing the body.
Why it is used: To carry routing hints, correlation IDs, and event types that consumers use without deserializing the message body.
# Send with attributessqs.send_message( QueueUrl=queue_url, MessageBody='message', MessageAttributes={ 'Author': { 'StringValue': 'John', 'DataType': 'String' } })Interview talking point: “Attribute values use the StringValue or BinaryValue shape with a DataType, and types allow custom suffixes like String.mytype. The 256KB message limit includes attribute bytes. Attributes are read-only once received, and SNS filter policies see only attributes unless you set FilterPolicyScope to MessageBody.”
Q1107: How do you implement SNS HTTP Subscriptions?
Section titled “Q1107: How do you implement SNS HTTP Subscriptions?”What it is: An HTTP(S) subscription POSTs a JSON envelope with Message and Signature to your endpoint, which must confirm via the SubscribeURL first.
Why it is used: To fan out to webhooks and third-party services without standing up a queue.
# Subscribe to topicaws sns subscribe \ --topic-arn topic-arn \ --protocol https \ --notification-endpoint https://my-endpoint.com/webhookInterview talking point: “An unconfirmed subscription delivers nothing until the endpoint follows the SubscribeURL or calls ConfirmSubscription. Respond with HTTP 200 quickly or SNS retries and eventually drops delivery. Raw message delivery posts the message body only, and the https protocol rejects self-signed or invalid TLS certificates.”
Q1108: How do you use SNS Message Tracing?
Section titled “Q1108: How do you use SNS Message Tracing?”What it is: SNS TracingConfig adds X-Ray trace context to published messages so traces carry across SNS into SQS and Lambda consumers.
Why it is used: To follow a request from producer through SNS and queue to consumer in X-Ray instead of stitching logs.
# Enable message tracingaws sns set-topic-attributes \ --topic-arn topic-arn \ --attribute-name TracingConfig \ --attribute-value "PassThrough"Interview talking point: “TracingConfig takes Active, PassThrough, or Inactive, the default that strips headers. PassThrough only preserves trace context if the publisher already has X-Ray active, while Active writes spans for every delivery and bills per span, so PassThrough is normal on high-volume topics. The attribute is a plain string, not a JSON map.”
Q1109: How do you implement SQS Batch Operations?
Section titled “Q1109: How do you implement SQS Batch Operations?”What it is: SendMessageBatch and DeleteMessageBatch send or delete up to ten messages per API call, each entry returning its own result.
Why it is used: To reduce API calls and cost on high-throughput queues, since one batch counts as a single request.
# Delete batchentries = [{'Id': str(i), 'ReceiptHandle': handles[i]} for i in range(len(handles))]sqs.delete_message_batch(QueueUrl=queue_url, Entries=entries)Interview talking point: “Batch calls are not all-or-nothing: failed entries come back in BatchResultErrorEntry and nothing retries them for you, so silently ignoring them loses data. Entry Ids must be unique and at most 80 characters, and the batch stays within 256KB. Do not confuse client batching with the Lambda trigger batch size.”
Q1110: How do you use SNS Platform Applications?
Section titled “Q1110: How do you use SNS Platform Applications?”What it is: SNS platform applications register mobile push endpoints for APNS, FCM, ADM, and Baidu, letting you create device endpoints and publish push.
Why it is used: To send iOS and Android push notifications without building push-sender protocol code or managing device tokens.
# Create platform applicationsns.create_platform_application( Name='my-app', Platform='GCM', Attributes={'PlatformCredential': 'api-key'})Interview talking point: “The setup chain is platform application, then device endpoint, then publish with the endpoint ARN as TargetArn. With MessageStructure json the payload keys differ per platform. When a device token goes invalid SNS marks the endpoint Disabled and you must re-register, and the APNS certificate must match sandbox or production.”
Q1111: How do you implement Kinesis Security?
Section titled “Q1111: How do you implement Kinesis Security?”What it is: Kinesis server-side encryption encrypts stream data at rest with a KMS key, enabled through enable-stream-encryption with encryption type KMS.
Why it is used: To meet data-at-rest compliance, making the stream unreadable without the key while reads decrypt transparently.
# Enable server-side encryptionaws kinesis enable-stream-encryption \ --stream-name my-stream \ --encryption-type KMS \ --kms-key-id key-idInterview talking point: “KMS is the only supported encryption type, and the key must be in the stream’s region, otherwise you get InvalidArgumentException about the key region. A Lambda consuming an encrypted stream needs kms:Decrypt on the key, not just kinesis:GetRecords. Toggling encryption has a cooldown, roughly once per five minutes.”
Q1112: How do you use Kinesis Stream Tags?
Section titled “Q1112: How do you use Kinesis Stream Tags?”What it is: Key-value tags attached to a Kinesis stream for cost allocation and resource grouping across teams and environments.
Why it is used: To attribute stream costs in Cost Explorer and organize many streams by team or environment.
# Add tagsaws kinesis add-tags-to-stream \ --stream-name my-stream \ --tags Team=Engineering,Environment=ProductionInterview talking point: “The tags flag accepts comma-separated Key=Value pairs or a JSON map, but mixing the two styles fails with InvalidParameterException. Each stream allows 50 tags, keys cannot start with the reserved aws prefix, and tagging has no effect on throughput. Cost allocation tagging may take about a day to appear.”
Q1113: How do you implement DynamoDB Streams?
Section titled “Q1113: How do you implement DynamoDB Streams?”What it is: DynamoDB Streams record every item-level insert, update, and delete near-real time, with a StreamViewType choosing which images are captured.
Why it is used: To react to table changes and trigger workflows or syncs without polling or writing an outbox pattern.
# Enable streamsaws dynamodb update-table \ --table-name my-table \ --stream-specification '{ "StreamEnabled": true, "StreamViewType": "NEW_AND_OLD_IMAGES" }'Interview talking point: “The four StreamViewTypes are KEYS_ONLY, NEW_IMAGE, OLD_IMAGE, and NEW_AND_OLD_IMAGES. Streams were eventually consistent for inserts until February 2023 and are now strongly consistent. Ordering is guaranteed per partition key, not across items, and a Lambda mapping consumes one shard with ReportBatchItemFailures for per-record acknowledgment.”
Q1114: How do you use DynamoDB Backup/Restore?
Section titled “Q1114: How do you use DynamoDB Backup/Restore?”What it is: On-demand DynamoDB backups are full, encrypted table snapshots you restore into a new table, independent of the table lifecycle.
Why it is used: For explicit compliance checkpoints before migrations, separate from PITR continuous 35-day recovery window.
# Create backupaws dynamodb create-backup \ --table-name my-table \ --backup-name my-backup
# Restoreaws dynamodb restore-table-to-point-in-time \ --source-table-name my-table \ --target-table-name my-restored-tableInterview talking point: “Restore always targets a new table with a fresh ARN; use restore-table-from-backup with the BackupArn, while restore-table-to-point-in-time is the PITR API. Backups are full, not incremental, billed per GB, and deleting one is permanent. Requesting the latest restoration time fails if PITR was never enabled.”
Q1115: How do you implement ElastiCache Redis Clustering?
Section titled “Q1115: How do you implement ElastiCache Redis Clustering?”What it is: An ElastiCache Redis replication group provides either cluster mode disabled, one primary with read replicas, or cluster mode enabled sharding.
Why it is used: To get multi-AZ failover for high availability and optional sharding for horizontal scale on in-memory caches.
# Create replication groupaws elasticache create-replication-group \ --replication-group-id my-cluster \ --num-cache-clusters 3 \ --automatic-failover-enabled \ --multi-az-enabled \ --engine redisInterview talking point: “Cluster mode disabled gives one primary with up to five read replicas and no sharding, while cluster mode enabled partitions data by hash slots across node groups. Multi-AZ requires automatic failover, and the DNS endpoint stays the same after promotion. Cross-shard multi-key operations break unless the client speaks the cluster protocol.”
Q1116: How do you use ElastiCache Global Datastore?
Section titled “Q1116: How do you use ElastiCache Global Datastore?”What it is: A Global Datastore replicates a Redis cluster across up to two secondary regions with sub-second lag and local reads.
Why it is used: For multi-region read-heavy apps and disaster recovery, letting a secondary be promoted when the primary region fails.
# Create global datastoreaws elasticache create-global-replication-group \ --global-replication-group-id my-global \ --replication-group-id primary-cluster \ --at-rest-encryption-enabledInterview talking point: “The global datastore is active-passive: only the primary region accepts writes, and secondaries are read-only until you promote one, which breaks the sync. Each region keeps its own endpoint DNS the app must target. At-rest and transit encryption settings must match across members or creation fails.”
Q1117: How do you implement RDS Automated Backups?
Section titled “Q1117: How do you implement RDS Automated Backups?”What it is: RDS automated backups take daily snapshots plus transaction log backups every five minutes, retained 7 to 35 days for point-in-time restore.
Why it is used: To get point-in-time recovery and crash protection without managing snapshots manually, the baseline RDS DR posture.
# Configure backupaws rds modify-db-instance \ --db-instance-identifier my-db \ --backup-retention-period 30 \ --preferred-backup-window "03:00-04:00"Interview talking point: “Setting backup retention to zero disables automated backups and point-in-time recovery entirely, the classic exam trap. Restores create a new instance with a fresh endpoint your app must repoint to. The backup window cannot overlap the maintenance window, and window times are UTC.”
Q1118: How do you use RDS Cross-Region Read Replicas?
Section titled “Q1118: How do you use RDS Cross-Region Read Replicas?”What it is: A read-only copy of an RDS instance in another region, fed asynchronously by the source transaction log with slight replication lag.
Why it is used: For near-zero RTO disaster recovery by promotion, regional read scaling, and a copy outside the primary failure domain.
# Create cross-region replicaaws rds create-db-instance-read-replica \ --db-instance-identifier replica-us-west \ --source-db-instance-arn primary-arn \ --region us-west-2Interview talking point: “The source must have automated backups enabled, since replication rides on the transaction log. Watch CloudWatch ReplicaLag and use promote-read-replica for cutover, which permanently ends replication and requires repointing the app. The instance identifier must differ across regions, and an encrypted replica uses a key in the target region.”
Q1119: How do you implement Aurora Global Database?
Section titled “Q1119: How do you implement Aurora Global Database?”What it is: Aurora Global Database replicates a cluster into up to five secondary regions with sub-second lag, each able to serve reads.
Why it is used: For global low-latency reads and region-failure disaster recovery with promotion measured in minutes.
# Add region to Aurora clusteraws rds create-db-cluster \ --db-cluster-identifier secondary-cluster \ --engine aurora \ --global-cluster-identifier global-clusterInterview talking point: “Secondary clusters join an existing global cluster by its global-cluster-identifier, and only the primary region writes. Replication is storage-based, which is why lag beats classic RDS log shipping. Engine versions must match across regions or you get InvalidDBClusterStateFault, and a forced failover risks data loss while switchover does not.”
Q1120: How do you use RDS Performance Insights?
Section titled “Q1120: How do you use RDS Performance Insights?”What it is: Performance Insights is a per-database load dashboard of average active sessions against capacity, with top SQL, wait, and lock dimensions.
Why it is used: To diagnose why a database is slow when CPU looks fine, by showing which SQL and which waits dominate.
# Enable Performance Insightsaws pi create-performance-insights-analysis \ --service-type RDS \ --identifier db-instance-idInterview talking point: “The real APIs are enable and disable on the instance plus get-resource-metrics and describe-dimension-keys; pi create-performance-insights-analysis does not exist. Use metric db.load.avg with dimensions like db.sql.id and db.wait.name. Retention is seven days free, and the twenty-four month history is a paid tier.”
Q1121: How do you implement OpenSearch Access Control?
Section titled “Q1121: How do you implement OpenSearch Access Control?”What it is: OpenSearch access control combines IAM resource policies gating the API with security-plugin fine-grained roles controlling indices, plus SAML for Dashboards.
Why it is used: To restrict the domain to authenticated, authorized users and specific indices instead of any IAM caller reaching the cluster.
# Create domain with fine-grained accessaws opensearch create-domain \ --domain-name my-domain \ --cluster-config '{"InstanceType":"t3.small.search"}' \ --access-policies '{"Version":"2012-10-17","Statement":[{"Effect":"Allow","Principal":"*","Action":"es:*","Resource":"arn:aws:es:us-east-1:account:domain/my-domain/*"}]}'Interview talking point: “Think two layers: the IAM resource policy decides whether you may reach the cluster API, and fine-grained control inside the security plugin decides which indices and actions you get. FGAC is managed through Dashboards or the _plugins/_security REST API, not the CLI, which only sees the IAM policy layer.”
Q1122: How do you use OpenSearch Dashboards?
Section titled “Q1122: How do you use OpenSearch Dashboards?”What it is: OpenSearch Dashboards is the web UI for searching, visualizing, and Dev Tools console work, secured by SAML SSO or FGAC users.
Why it is used: To give analysts a GUI with single sign-on for exploring data and administering fine-grained roles.
# Access via console or configure SAML:aws opensearch update-domain-config \ --domain-name my-domain \ --saml-options '{"Enabled":true,"Idp":{"MetadataContent":"metadata","EntityId":"entity"}}'Interview talking point: “SAML authentication still needs an IdP attribute mapped to an OpenSearch role, otherwise login succeeds but the user has no role and sees nothing. The Dashboards server account holds the all_access superuser by default, a classic audit finding you should lock down. Bad IdP metadata breaks logins while the cluster itself stays up.”
Q1123: How do you implement Redshift Serverless?
Section titled “Q1123: How do you implement Redshift Serverless?”What it is: Redshift Serverless defines a namespace for data and security plus a workgroup for auto-scaling compute measured in RPUs, with no cluster to size.
Why it is used: For variable or light query workloads where a provisioned cluster would idle, paying per RPU-hour instead.
# Create namespaceaws redshift create-namespace \ --namespace-name my-namespace \ --admin-user-name admin \ --admin-user-password passwordInterview talking point: “The split to remember is namespace for catalog, users, and security, workgroup for compute. Base capacity runs from 2 to 1024 RPUs, and leaving auto-scaling unbounded lets one big query spike the bill. COPY and UNLOAD need an IAM role attached to the namespace or S3 returns Access Denied.”
Q1124: How do you use Redshift RA3?
Section titled “Q1124: How do you use Redshift RA3?”What it is: RA3 nodes separate compute from S3-backed managed storage, so local SSD is only a cache and nodes scale independently of data volume.
Why it is used: To add compute for query performance without re-provisioning storage, replacing dense-compute dc2 nodes for most workloads.
# Use RA3 instances for managed storage# Pay for compute and managed storage separatelyaws redshift create-cluster \ --cluster-type multi-node \ --node-type ra3.xlplus \ --number-of-nodes 2Interview talking point: “Because data lives in managed storage rather than node disks, resize-cluster changes node count without copying the whole dataset, unlike dc2 where resize means a full data copy. The RA3 bill combines node-hours with per-gigabyte managed storage, which is where surprises come from.”
Q1125: How do you implement Redshift Spectrum?
Section titled “Q1125: How do you implement Redshift Spectrum?”What it is: Spectrum queries S3 data in place through external tables defined over a Glue or Hive catalog, with no COPY or loading.
Why it is used: To query data lakes alongside local tables in one SQL interface without paying to store cold data in the cluster.
-- Create external tableCREATE EXTERNAL TABLE spectrum.sales ( sale_id INT, amount DECIMAL(10,2))STORED AS PARQUETLOCATION 's3://bucket/path/';Interview talking point: “The missing step is CREATE EXTERNAL SCHEMA from the Glue catalog before any CREATE EXTERNAL TABLE. The cluster’s IAM role needs s3:GetObject plus Glue read permissions or queries fail with AccessDenied. Spectrum bills per byte scanned, so partitioning and Parquet format directly control cost.”
Q1126: How do you use Glue Data Catalog?
Section titled “Q1126: How do you use Glue Data Catalog?”What it is: A Hive-compatible metadata store of databases, tables, schemas, and partitions, shared by Athena, Redshift Spectrum, EMR, and Glue ETL.
Why it is used: To define what each S3 prefix means once, so many engines share one schema instead of copies.
# Create databaseaws glue create-database \ --database-input '{"Name":"mydb"}'
# Create tableaws glue create-table \ --database-name mydb \ --table-input '{"Name":"mytable","StorageDescriptor":{"Location":"s3://bucket/table/"}}'Interview talking point: “A table’s StorageDescriptor is the contract holding the S3 location, columns, and serde, with PartitionKeys defining the partition set. The catalog is regional, so a table is invisible in another region without replication. Enabling Lake Formation redirects glue:GetTable through LF grants instead of plain IAM.”
Q1127: How do you implement Glue Job Bookmarks?
Section titled “Q1127: How do you implement Glue Job Bookmarks?”What it is: Glue job bookmarks track which S3 files or partitions a job already processed, so re-runs handle only new data.
Why it is used: For incremental ETL on growing S3 data without building your own watermark or state store.
# Enable job bookmarksjob = GlueContext(sc).create_dynamic_frame.from_options( connection_type="s3", format="json", connection_options={"paths": ["s3://bucket/data"], "jobBookmarkKeys": ["timestamp"]})Interview talking point: “The bookmark toggle is the job parameter —job-bookmarks-option job-bookmarks-enable, not the legacy jobBookmarkKeys frame option in older snippets. Bookmarks compare file modified times and sizes, advance only after a successful run, and unsupported connections fail with a bookmark not supported error.”
Q1128: How do you use Athena Views?
Section titled “Q1128: How do you use Athena Views?”What it is: A named SELECT stored in the Athena catalog, a reusable logical table over base tables with no data copied or stored.
Why it is used: To define canonical queries once so users and BI tools share consistent logic instead of copy-pasted SQL.
CREATE VIEW sales_by_category ASSELECT category, SUM(amount) as totalFROM salesGROUP BY category;Interview talking point: “A view is not materialized: querying it scans exactly the same data as the base query, so it saves typing, not bytes. If a base column changes the view fails with a column cannot be resolved error. Use CREATE OR REPLACE for idempotent DDL, or a materialized view when you want pre-aggregation.”
Q1129: How do you implement Lake Formation Permissions?
Section titled “Q1129: How do you implement Lake Formation Permissions?”What it is: Lake Formation grants fine-grained read, write, column, and row access on catalog resources, enforced by Athena, EMR, Glue, and integrated clients.
Why it is used: To centralize data-lake access control, like who may see PII columns, instead of per-service IAM sprawl.
# Grant table permissionsaws lakeformation grant-permissions \ --principal DataLakePrincipalIdentifier=user@example.com \ --permissions SELECT \ --resource '{"Table":{"DatabaseName":"mydb","TableName":"table1"}}'Interview talking point: “Lake Formation does not replace IAM; the principal needs both the Lake Formation grant and underlying IAM permissions. Column-level access uses TableWithColumns with columnNames, while row filters are a separate, newer feature. Direct s3:GetObject bypasses LF outside integrated clients, which is why full-access IAM policies still cannot see tables.”
Q1130: How do you use QuickSight Embedding?
Section titled “Q1130: How do you use QuickSight Embedding?”What it is: QuickSight embedding returns a signed URL that renders live dashboards inside your app for registered, IAM, or anonymous identities.
Why it is used: To offer white-label analytics in your product without users logging into the QuickSight console.
# Generate embed URLquicksight = boto3.client('quicksight')response = quicksight.get-dashboard-embed-url( AwsAccountId='123456789012', DashboardId='dashboard-id', IdentityType='IAM')Interview talking point: “IdentityType picks the audience: IAM for an IAM principal, QUICKSIGHT for native users, ANONYMOUS with a domain allowlist for public embedding. The caller needs quicksight:GetDashboardEmbedUrl and the dashboard must be shared to that identity. Sessions expire, so the wrapper refreshes the URL, and an unsubscribed account fails with UnsupportedPricingPlanException.”
Q1131: How do you implement CloudWatch Synthetics?
Section titled “Q1131: How do you implement CloudWatch Synthetics?”What it is: Synthetics canaries run scheduled Node.js Puppeteer or Playwright scripts on a managed Lambda runtime, reporting pass or fail with screenshots and HAR.
Why it is used: To verify web app availability and user flows end to end from outside your own network.
# Create canaryaws synthetics create-canary \ --name my-canary \ --schedule-expression "rate(5 minutes)" \ --code-handler index.js \ --runtime-version syn-nodejs-puppeteer-3.0Interview talking point: “The runtime must be one of the managed syn-nodejs-puppeteer versions, or create-canary fails with a ValidationException on runtime version. The canary runs on Lambda, so reaching a VPC-only app requires the Synthetics VPC configuration, otherwise it silently cannot connect. Screenshots and HAR files accumulate in the artifacts bucket, so set a lifecycle policy.”
Q1132: How do you use CloudWatch Contributor Insights?
Section titled “Q1132: How do you use CloudWatch Contributor Insights?”What it is: Contributor Insights evaluates a JSON rule over log groups to rank the top contributors to errors or load by a chosen dimension.
Why it is used: To answer who or what is causing the noise, like top offending IPs, without ad-hoc log queries.
# Create insight ruleaws cloudwatch put-insight-rule \ --rule-name my-rule \ --rule '{"schema":{"root":"LogGroup","fields":[{"field":"@timestamp"}]}}'Interview talking point: “The rule schema needs Contribution.Keys for the dimension you rank by and AggregateOn set to Count or Sum, since a skeletal rule does nothing. Results update near real time with a minute or two of delay, cost about fifty cents per rule monthly plus data processed, and rules are regional and not retroactive.”
Q1133: How do you implement CloudWatch Evidently?
Section titled “Q1133: How do you implement CloudWatch Evidently?”What it is: Evidently is a feature-flag and A/B testing service where features hold variations and experiments or launches control how traffic splits.
Why it is used: To ship behind a flag, roll out progressively, and run statistically sound A/B tests without redeploying.
# Create featureaws evidently create-feature \ --project my-project \ --name my-feature \ --variations '[{"name":"control","value":{"boolValue":false}},{"name":"treatment","value":{"boolValue":true}}]'Interview talking point: “The app calls EvaluateFeature with an entityId like a user id, and Evidently decides the variation server-side rather than the request context. Experiments are scientific tests with a metric and analysis window, while launches are percentage rollouts. Evaluation is billed per call beyond the free tier, so heavy traffic adds up.”
Q1134: How do you use CloudWatch RUM?
Section titled “Q1134: How do you use CloudWatch RUM?”What it is: CloudWatch RUM collects client-side web metrics like page loads, Web Vitals, and JavaScript errors through the AWS RUM web client.
Why it is used: To see frontend performance and errors exactly as users experience them, which server-side metrics cannot capture.
# Create app monitoraws rum create-app-monitor \ --name my-monitor \ --domain-allow-list '["example.com"]'Interview talking point: “The browser client authenticates through a Cognito identity pool, and its unauth role must include rum:PutRumEvents or events silently never arrive. The domain allowlist drops telemetry from any origin not listed, and SessionSampleRate defaults to ten percent. RUM is regional and web only, with no mobile SDK.”
Q1135: How do you implement CloudWatch Metric Streams?
Section titled “Q1135: How do you implement CloudWatch Metric Streams?”What it is: Metric Streams continuously pushes CloudWatch metrics in JSON or OpenTelemetry format to a Kinesis Firehose feeding S3, Splunk, OpenSearch, or HTTP.
Why it is used: To feed your own observability stack for long-term retention instead of relying on CloudWatch’s 15-month history.
# Create metric streamaws cloudwatch put-metric-stream \ --name my-stream \ --role-arn role-arn \ --firehose-arn firehose-arnInterview talking point: “The delivery role must trust streams.metrics.cloudwatch.amazonaws.com and grant Firehose write permission, otherwise the stream exists but zero records arrive. Choose output format json or opentelemetry-0.7, and use exclude-filters to avoid streaming everything. It is a copy of CloudWatch data, billed per record, and each stream covers only one region.”
Q1136: How do you use X-Ray Sampling Rules?
Section titled “Q1136: How do you use X-Ray Sampling Rules?”What it is: Sampling rules decide which requests get traced, combining a per-second reservoir that is always sampled with a fixed rate for the rest.
Why it is used: To bound tracing cost on high-traffic services while still capturing enough spans for representative latency analysis.
# Create sampling ruleaws xray put-sampling-rules \ --sampling-rule-documents '[{ "RuleName": "default", "FixedRate": 0.1, "ReservoirSize": 5, "ServiceName": "*", "ServiceType": "*" }]'Interview talking point: “The reservoir guarantees that many traces per second regardless of the fixed rate, and everything after it is sampled at FixedRate. Rules match on service name and type, HTTP method, path, and host, with lower Priority winning. The SDK decides locally from its cached rule table, so use FixedRate 1 for compliance-critical paths.”
Q1137: How do you implement Cost Explorer Budgets?
Section titled “Q1137: How do you implement Cost Explorer Budgets?”What it is: AWS Budgets alert when cost or usage crosses a limit you set, with notifications to SNS or email and optional budget actions.
Why it is used: To get warned before the bill lands and auto-stop resources when spend runs away.
# Create budgetaws budgets create-budget \ --account-id 123456789012 \ --budget '{ "BudgetName": "monthly", "BudgetLimit": {"Amount": "1000", "Unit": "USD"}, "TimeUnit": "MONTHLY" }'Interview talking point: “The budget JSON should include BudgetType, which the simple example omits, and notifications must be attached after the budget exists or you get NotFoundException. Budget actions can stop EC2 or RDS instances when a threshold trips. Track both ACTUAL and FORECASTED thresholds, and a monthly budget resets on the first of the UTC month.”
Q1138: How do you use AWS Config Conformance Packs?
Section titled “Q1138: How do you use AWS Config Conformance Packs?”What it is: A conformance pack is a YAML template bundling many Config rules and remediation actions, deployed and evaluated as one unit.
Why it is used: To roll out a compliance framework like CIS or PCI across accounts and regions in one deployment.
# Create conformance packaws configservice put-conformance-pack \ --conformance-pack-name security \ --template-s3-uri s3://bucket/template.yamlInterview talking point: “Redeploying a pack with the same name replaces its rules rather than merging them. Organization-wide rollout needs config:PutConformancePack in the management account plus delegated administrator setup. If the configuration recorder is off, every rule reports NOT_APPLICABLE, which looks like a broken pack but is a missing recorder.”
Q1139: How do you implement GuardDuty Findings?
Section titled “Q1139: How do you implement GuardDuty Findings?”What it is: GuardDuty findings are severity-rated security detections from threat intelligence, anomaly detection, and ML across VPC, EKS, S3, RDS, and Lambda activity.
Why it is used: To detect compromised keys, crypto mining, and DNS tunneling continuously, then feed findings into response tooling.
# Get findingsaws guardduty list-findings \ --detector-id detector-id \ --finding-criteria '{"Criterion":{"severity":{"Eq":["4","5"]}}}'Interview talking point: “list-findings needs the account detector id from list-detectors, and finding-criteria filters server-side on fields like severity. Severity runs 0.1 to 8, with medium at 4 and high at 7. Enable the detector first and allow a few hours of baseline, then route findings through EventBridge for near-real-time reactions.”
Q1140: How do you use Security Hub Standards?
Section titled “Q1140: How do you use Security Hub Standards?”What it is: Security Hub standards are predefined checks from CIS, AWS Foundational Security Best Practices, PCI DSS, and NIST that score your account continuously.
Why it is used: To get one consolidated compliance score and findings stream across accounts and services for audit posture.
# Enable standardaws securityhub enable-standards \ --standards-arn "arn:aws:securityhub:::ruleset/cis-aws-foundations-benchmark/v/1.2.0"Interview talking point: “Standards are regional, so enable Security Hub first and pass a supported standards-arn or you get ValidationException. NO_RECORD means the resource type is not being recorded, fixed by turning on the Config recorder, while NOT_APPLICABLE simply means the rule does not apply to that resource.”
Q1141: How do you implement Detective Behavioral Graph?
Section titled “Q1141: How do you implement Detective Behavioral Graph?”What it is: Detective builds a behavioral graph from VPC flow logs, CloudTrail, and GuardDuty findings, storing who did what to whom and when.
Why it is used: To answer what a compromised key actually did in minutes instead of cross-referencing logs by hand.
# Enable Detectiveaws detective create-graph \ --auto-enable-accounts
# Create member invitationaws detective create-members \ --graph-arn graph-arn \ --accounts '[{"AccountId":"123456789012","EmailAddress":"admin@example.com"}]'Interview talking point: “Every Detective API needs the graph ARN from list-graphs, and member accounts stuck in INVITED status contribute no data until they accept. The graph needs GuardDuty, CloudTrail, and VPC flow logs enabled to be useful, and it charges per gigabyte ingested with a limited retention window.”
Q1142: How do you use Macie Classification Jobs?
Section titled “Q1142: How do you use Macie Classification Jobs?”What it is: Macie classification jobs scan S3 objects against managed and custom data identifiers for PII, as ONE_TIME or SCHEDULED jobs.
Why it is used: To discover and inventory where sensitive data rests in S3 for privacy and DLP audits.
# Create jobaws macie2 create-classification-job \ --job-type ONE_TIME \ --name my-job \ --s3-job-definition '{ "bucketDefinitions": [{"accountId":"123456789012","buckets":["my-bucket"]}] }'Interview talking point: “A SCHEDULED job fails without schedule-frequency set to daily, weekly, or monthly. Macie is regional and covers only S3, and scanning bills per gigabyte, so use bucket criteria plus sampling-percentage on large data lakes. Managed identifiers cover common PII, while org-specific patterns need custom-data-identifier-ids.”
Q1143: How do you implement Inspector Scanning?
Section titled “Q1143: How do you implement Inspector Scanning?”What it is: Amazon Inspector continuously scans EC2 instances, ECR images, and Lambda functions for package CVEs against exploitability intelligence.
Why it is used: To catch known vulnerabilities in images and workloads before exploitation, replacing Inspector’s old network reachability model.
# Enable Inspectoraws inspector2 enable \ --account-ids 123456789012
# List findingsaws inspector2 list-findings \ --filter-criteria '{"severity":[{"comparison":"EQUALS","value":"CRITICAL"}]}'Interview talking point: “Enable with resource-types limited to EC2, ECR, and Lambda to control scope and cost, since pricing is per scanned resource. Findings appear only after the first scan completes, which is why a fresh enable shows nothing. Filter criteria use comparisons like EQUALS, and findings export to Security Hub, EventBridge, or S3.”
Q1144: How do you use Network Firewall Stateful Rules?
Section titled “Q1144: How do you use Network Firewall Stateful Rules?”What it is: Stateful rule groups track connection state and apply ALLOW, DROP, PASS, or ALERT per rule, ordered by the policy’s rule order setting.
Why it is used: To enforce application-aware policies like allowing only HTTPS or blocking malicious domains that plain 5-tuple rules cannot express.
# Create rule groupaws network-firewall create-rule-group \ --rule-group-name my-rules \ --type STATEFUL \ --capacity 100 \ --rule-group '{ "RuleDefinitions": [{ "MatchAttributes": {"protocols":[6], "source":{"AddressDefinition":"10.0.0.0/8"}}, "Actions": ["PASS"] }] }'Interview talking point: “Stateless rules evaluate first and aws:forward_to_sfe hands traffic to the stateful engine; forgetting that default action means stateful blocks never fire. RuleOrder can be DEFAULT_ACTION_ORDER, FIRST, or STRICT_ORDER, and only STRICT_ORDER lets numbered priorities decide. Stateful groups also accept Suricata rule syntax, with capacity measured in units starting at 100.”
Q1145: How do you implement WAF Rate-Based Rules?
Section titled “Q1145: How do you implement WAF Rate-Based Rules?”What it is: A WAF rate-based rule counts requests per aggregation key over a five-minute window and blocks clients that exceed the rate limit.
Why it is used: To stop brute-force, scraping, and flood attacks by behavior rather than static IP blocklists.
# Create rate-based ruleaws wafv2 create-rule \ --name my-rate-rule \ --scope REGIONAL \ --rate-limit 2000 \ --rate-key IP \ --priority 1Interview talking point: “Create-rule still requires the full statement JSON and visibility config, not just rate-limit and rate-key. Use FORWARDED_IP with a forwarded-ip-config behind CloudFront or every user shares the proxy IP and gets blocked, and start in Count mode to calibrate the limit. Scope is REGIONAL for ALB and API Gateway, CLOUDFRONT for distributions.”
Q1146: How do you use Shield Advanced Protection?
Section titled “Q1146: How do you use Shield Advanced Protection?”What it is: Shield Advanced is a paid per-account subscription adding enhanced DDoS detection and mitigation, 24/7 DRT access, and cost protection for key resources.
Why it is used: To protect critical endpoints with AWS teardown support and financial reimbursement for attack-driven traffic spikes.
# Enable Shield Advanced# Add protection to resourceaws shield associate-drt-log-bucket \ --log-bucket bucket-nameInterview talking point: “Shield Advanced protects per resource through create-protection, and associate-drt-log-bucket shares flow logs with the DRT, but the team also needs the DRT role authorized before it can act. Shield covers infrastructure-layer DDoS while WAF rate rules cover application-layer floods; the two are complementary.”
Q1147: How do you implement AWS Network Firewall Policy?
Section titled “Q1147: How do you implement AWS Network Firewall Policy?”What it is: A firewall policy is the container that lists stateless groups with priorities and default actions plus stateful groups, then attaches to a firewall.
Why it is used: To define which rule groups apply, in what order, with what defaults, reusable across multiple firewalls.
# Create firewall policyaws network-firewall create-firewall-policy \ --firewall-policy-name my-policy \ --rule-group-arns [group-arn] \ --stateful-rule-options '{"RuleOrder":"DEFAULT_ACTION_ORDER"}'Interview talking point: “StatelessDefaultActions must include aws:forward_to_sfe, otherwise traffic never reaches the stateful engine and your block rules silently never fire while normal traffic still works. Stateless groups are ordered by priority, stateful groups by the rule order setting, and policy changes go through update-firewall-policy with a new revision.”
Q1148: How do you use Secrets Manager Rotation?
Section titled “Q1148: How do you use Secrets Manager Rotation?”What it is: Secrets Manager rotates a secret’s value on a schedule, default every 30 days, by invoking a Lambda that follows a step contract.
Why it is used: To refresh database passwords and API keys automatically, removing manual rotation and exposure from leaked credentials.
# Create secret with Lambda rotationsecretsmanager.create_secret( Name='db-creds', SecretString='{"username":"admin","password":"pass"}', RotationLambdaARN='arn:lambda:rotation-function', RotationRules={'AutomaticallyAfterDays': 30})Interview talking point: “The rotation Lambda must handle the AWSCURRENT, AWSPENDING, and AWSPREVIOUS version stages and hold GetSecretValue and PutSecretValue plus database permissions, or the secret sticks in PENDING. The modern shortcut is RDS —manage-master-user-password, which rotates the master password with no Lambda. Deleting a secret keeps a seven-day recovery window.”
Q1149: How do you implement Parameter Store Hierarchy?
Section titled “Q1149: How do you implement Parameter Store Hierarchy?”What it is: Parameter Store arranges parameters in path hierarchies like files, with String, StringList, and KMS-encrypted SecureString types plus versioning.
Why it is used: To centralize config with IAM path-scoped permissions and versioning, a lighter alternative to Secrets Manager for non-secrets.
# Create hierarchical parameteraws ssm put-parameter \ --name /myapp/production/database/host \ --value "db.example.com" \ --type String
# Get parameteraws ssm get-parameter --name /myapp/production/database/host --with-decryptionInterview talking point: “Retrieving a SecureString without —with-decryption returns ciphertext-looking text, and using the flag requires kms:Decrypt on the key. IAM policies scope cleanly by path, such as arn for parameter/myapp/production/*. Note that CloudFormation dynamic references do not support SecureString; reference a Secrets Manager ARN instead.”
Q1150: How do you use Systems Manager Automation?
Section titled “Q1150: How do you use Systems Manager Automation?”What it is: Systems Manager Automation runs predefined or custom runbook documents step by step across instances, started with start-automation-execution.
Why it is used: To turn operational scripts into governed processes with approvals, retries, concurrency limits, and a full audit trail.
# Run automation documentaws ssm start-automation-execution \ --document-name AWS-RestartEC2Instance \ --parameters '{"InstanceId":["i-12345"]}'Interview talking point: “Parameters always use the bracketed array form, for example InstanceId as a list; passing a plain string fails with a ValidationException when the document expects a list. Targets must have an online SSM Agent or the step stalls, and max-errors with max-concurrency stages fleet-wide runs.”
Q1151: How do you implement Session Manager Logging?
Section titled “Q1151: How do you implement Session Manager Logging?”What it is: Session Manager log delivery sends SSM session transcripts, the terminal input and output, to S3 and/or CloudWatch Logs through service setting preferences so every session is auditable.
Why it is used: To record who typed what on which instance for compliance and forensics instead of unlogged shell access.
# Configure S3 loggingaws ssm update-service-setting \ --setting-id arn:aws:ssm:us-east-1:123456789012:servicesetting/ssm/parameter-store/s3-bucket \ --setting-value bucket-nameInterview talking point: “The real settings are ssm/session-manager/s3-bucket, ssm/session-manager/s3-key-prefix, and logging-cloudwatch-log-group-name, not the parameter-store setting in the doc. Settings are per region and apply only to new sessions, so old sessions are never logged retroactively.”
Q1152: How do you use Patch Manager Baseline?
Section titled “Q1152: How do you use Patch Manager Baseline?”What it is: A patch baseline defines which patches to approve, reject, or defer for an operating system, expressed as approval rules with product, classification, and severity filters.
Why it is used: To control patch policy centrally, approving needed updates while blocking patches known to break applications.
# Create patch baselineaws ssm create-patch-baseline \ --name "Windows Baseline" \ --operating-system WINDOWS \ --patch-filters '[{"Key":"PRODUCT","Values":["WindowsServer2022"]}]'Interview talking point: “Patch filters are not a standalone —patch-filters flag; they live inside —approval-rules as PatchRules JSON. Use —rejected-patches with a BLOCK action for known-bad patches, and match —operating-system to the fleet or zero rules apply.”
Q1153: How do you implement State Manager?
Section titled “Q1153: How do you implement State Manager?”What it is: State Manager runs SSM associations that apply a document to targeted instances on a schedule, enforcing a desired configuration state across the fleet.
Why it is used: To enforce configuration state fleet-wide and automatically correct drift, such as keeping the CloudWatch agent installed everywhere.
# Create associationaws ssm create-association \ --name "AWS-ConfigureCloudWatch" \ --targets '[{"Key":"tag:Environment","Values":["Production"]}]'Interview talking point: “Always set a schedule expression; omitting it means the association runs once at creation and never again. A typo in the target tag silently associates nothing, and associations are region-bound, so replicate them per region.”
Q1154: How do you use Inventory Collection?
Section titled “Q1154: How do you use Inventory Collection?”What it is: SSM Inventory collects instance metadata such as installed applications, patches, files, and network configuration on a schedule, then makes it queryable per instance.
Why it is used: To answer what software and patches run on the fleet for audits, licensing, and security baselines without scripts.
# Configure inventoryaws ssm put-inventory \ --instance-id i-12345 \ --items '[{"TypeName":"AWS:Application","SchemaVersion":"1.0","Content":[{"Name":"my-app"}]}]'Interview talking point: “The managed path is the AWS-GatherSoftwareInventory association, which replaces prior items on each run; manual put-inventory requires the exact TypeName and SchemaVersion or validation fails. Export fleet-wide data with Resource Data Sync to S3 and Athena for SQL queries.”
Q1155: How do you implement Maintenance Windows?
Section titled “Q1155: How do you implement Maintenance Windows?”What it is: Maintenance Windows define time slots for operational tasks like patching, with registered tasks and targets so disruptive work runs in controlled periods.
Why it is used: To schedule patching and restarts during defined low-traffic windows instead of whenever a job happens to fire.
# Create maintenance windowaws ssm create-maintenance-window \ --name "Weekly Patching" \ --schedule "cron(0 2 ? * SUN *)" \ --duration 4 \ --cutoff 1Interview talking point: “Duration is how long the window stays open while cutoff is the last hour tasks may start, so tasks missing the cutoff wait for the next window. Create the target first and reference it with WindowTargetIds, and set max-concurrency and max-errors to pace the fleet.”
Q1156: How do you use OpsCenter?
Section titled “Q1156: How do you use OpsCenter?”What it is: OpsCenter is SSM’s operations queue of structured OpsItems that operators triage, attach resources and runbooks to, and move from open to resolved.
Why it is used: To centralize who is working on which operational problem, with resource context and one-click runbook response attached.
# Create OpsItemaws ssm create-ops-item \ --title "Database CPU High" \ --description "CPU utilization above 90%" \ --priority 2 \ --operational-data '{"key":{"Value":"value"}}'Interview talking point: “Priority runs 1 to 5 with 1 highest, while severity is a separate CRITICAL to LOW field. Mark operational data as SearchableString or it will not appear in search, and titles are visible to everyone with ops access, so never put secrets there.”
Q1157: How do you implement Explorer?
Section titled “Q1157: How do you implement Explorer?”What it is: Systems Manager Explorer is a console dashboard aggregating OpsItems and OpsData such as patch and inventory compliance across accounts and regions into one view.
Why it is used: To see all open operational issues and fleet status across the organization instead of paging through consoles.
# Enable AWS Exploreraws ssm describe-ops-items \ --ops-item-filters '[{"Key":"Status","Values":["Open"]}]'Interview talking point: “describe-ops-items is OpsCenter’s query API, not the Explorer enablement call; Explorer itself is configured in the console by choosing source accounts and regions, with cross-account aggregation via SSM organization integration. Aggregations refresh on a cadence, so a new item appears with lag.”
Q1158: How do you use Incident Manager?
Section titled “Q1158: How do you use Incident Manager?”What it is: AWS Incident Manager formalizes incident response: you create an incident with impact and a dedupe string, and a response plan drives engagement, chat, and runbooks.
Why it is used: To coordinate the team when things break by paging on-call, opening a chat channel, and tracking mitigation.
# Create incidentaws ssm-incidents create-incident \ --title "Database Outage" \ --impact-level 2 \ --incident-template '{"dedupeString":"unique-id","notificationTargets":[{"snsTopicArn":"arn:sns"}]}'Interview talking point: “create-incident lives in the ssm-incidents service, and without a response plan ARN the incident is just a record with nobody paged. The dedupe string merges repeated alarms into one incident, so make it unique per incident type rather than a static string.”
Q1159: How do you implement AppConfig Extensions?
Section titled “Q1159: How do you implement AppConfig Extensions?”What it is: AppConfig extensions register Lambda actions at configuration deployment points such as start, step, baking, complete, and rolled back, for associated profiles.
Why it is used: To add validation, notification, or secret-injection logic around config deployments, like blocking a bad config before release.
# Create extensionaws appconfig create-extension \ --name my-extension \ --actions '[{"Name":"my-action","Uri":"arn:aws:lambda:function"}]'Interview talking point: “The action Name must be a real action point like ON_DEPLOYMENT_START, not a display name, paired with the Lambda ARN in Uri. An extension does nothing until associated with a configuration profile, and a failing pre-deployment Lambda blocks the rollout.”
Q1160: How do you use Service Catalog Products?
Section titled “Q1160: How do you use Service Catalog Products?”What it is: Service Catalog products are templated CloudFormation assets that users provision from curated portfolios instead of raw templates, with versions tracked as provisioning artifacts.
Why it is used: To give teams self-service infrastructure while governing which templates they may launch and with what permissions.
# Create productaws servicecatalog create-product \ --name "Web Server" \ --owner "IT" \ --product-type CLOUD_FORMATION_TEMPLATE \ --provisioning-artifact-parameters '{"Name":"v1","Description":"Web server"}'Interview talking point: “Provisioning artifact parameters require Info.LoadTemplateFromURL pointing at an S3 template, which the minimal example omits, or creation fails. A product not associated with a portfolio is invisible to users, and LAUNCH constraints decide what IAM permissions the provisioned stack receives.”
Q1161: How do you implement AWS CodeStar Notifications?
Section titled “Q1161: How do you implement AWS CodeStar Notifications?”What it is: CodeStar Notifications creates notification rules that send SNS messages for events on resources such as pipeline executions, builds, and pull requests.
Why it is used: To push deploy and pull request alerts to chat or email with one rule per resource.
# Create notification ruleaws codestar-notifications create-notification-rule \ --name my-rule \ --event-type-id "codepipeline.pipeline-pipeline-execution-succeeded" \ --target '{"Type":"SNS","TargetAddress":"arn:sns"}'Interview talking point: “The resource must be the exact ARN of the monitored resource or you get a ValidationException, and supported targets are SNS topics plus chatbot. Slack delivery works through AWS Chatbot subscribing to that SNS topic rather than through the rule itself.”
Q1162: How do you use CodeStar Connections?
Section titled “Q1162: How do you use CodeStar Connections?”What it is: CodeStar Connections is the provider integration layer linking GitHub, Bitbucket, or GitLab to CodePipeline so source pulls use a managed connection instead of stored tokens.
Why it is used: To wire third-party repositories into pipelines securely, with one reusable authorization point and automatic token refresh.
# Create connectionaws codestar-connections create-connection \ --connection-name my-connection \ --provider-type GitHub
# Use in pipelineaws codepipeline create-pipeline \ --source-action '{ "configuration": {"ConnectionArn":"arn:connection","Owner":"owner","Repo":"repo","Branch":"main"} }'Interview talking point: “A new connection stays in PENDING until you finish the console GitHub app authorization; pipelines referencing it fail with the connection is not in AVAILABLE state. Source configuration keys are ConnectionArn, FullRepositoryId, and BranchName inside the pipeline JSON body.”
Q1163: How do you implement CodeCatalyst?
Section titled “Q1163: How do you implement CodeCatalyst?”What it is: CodeCatalyst is a managed DevOps service bundling source repositories, issue boards, CI workflows, and browser dev environments in one space and project web app.
Why it is used: To stand up a full plan-code-deploy loop for a team in one tool instead of stitching separate services.
# Use CodeCatalyst console:# 1. Create project# 2. Connect repository# 3. Create Dev Environment# 4. Set up workflowInterview talking point: “It is console-driven with no CLI for project creation, workflows are YAML under .codecatalyst/workflows running on CodeBuild, and deploy actions need an AWS role attached to the space. CodeCatalyst is the successor to the discontinued CodeStar project model.”
Q1164: How do you use Proton Templates?
Section titled “Q1164: How do you use Proton Templates?”What it is: AWS Proton publishes environment and service templates built on CloudFormation with input schemas, which application teams instantiate to deploy standard platform stacks.
Why it is used: To give application teams a governed self-service path to deploy services without hand-rolling infrastructure.
# Create service templateaws proton create-service-template \ --name "ecs-service" \ --display-name "ECS Service"Interview talking point: “A template version is registered from a bundle containing schema.yaml and infrastructure CloudFormation, then create-service takes a spec file that drives deployment. Service templates must declare compatible environment templates or creation fails with a ValidationException on that mismatch.”
Q1165: How do you implement Amplify Hosting?
Section titled “Q1165: How do you implement Amplify Hosting?”What it is: Amplify Hosting deploys web apps from a Git repository with automatic builds on push, branch-based environments, PR preview URLs, CDN delivery, and managed domains.
Why it is used: To ship a frontend with zero server ops: connect a repo and get per-branch URLs and previews.
# Use Amplify Console:# 1. Connect repository# 2. Build settings# 3. Branch deployments# 4. Pull request previewsInterview talking point: “Build settings come from amplify.yml with frontend phases, artifacts base directory, and cache, and environment config is baked at build time, so changing an environment variable requires a rebuild rather than a restart. SSR Next.js apps cost compute while static hosting stays cheap.”
Q1166: How do you use CodeBuild Report Groups?
Section titled “Q1166: How do you use CodeBuild Report Groups?”What it is: CodeBuild report groups collect test and coverage results published by builds, showing per-test pass, fail, and skip dashboards in the console.
Why it is used: To gate releases on test results inside CodeBuild without a separate CI test-reporting tool.
# Create report groupaws codebuild create-report-group \ --name my-reports \ --type TEST
# Create reportaws codebuild create-report \ --name my-report \ --report-group-ar-n [report-group-arn]Interview talking point: “Most groups are declared in the buildspec reports section by group name, and a build producing no matching files marks the report empty. Report groups are account-level per-region resources, and the type distinguishes TEST from CODE_COVERAGE formats such as cobertura.”
Q1167: How do you implement Cloud9 Development?
Section titled “Q1167: How do you implement Cloud9 Development?”What it is: Cloud9 is a browser-based IDE with a terminal and AWS tooling that runs on an EC2 instance created with create-environment-ec2.
Why it is used: To give developers a full IDE without local installs, driven and cleaned up through the AWS CLI.
# Create environmentaws cloud9 create-environment-ec2 \ --name my-environment \ --instance-type t3.microInterview talking point: “Cloud9 is not a separate billable service; it is the EC2 instance behind a web IDE, so shut it down or set automatic-stop-time-minutes to stop billing. The instance is SSM-managed with IAM-backed credentials and belongs in a private subnet.”
Q1168: How do you use SAM Accelerate?
Section titled “Q1168: How do you use SAM Accelerate?”What it is: SAM Accelerate, the sam sync command, pushes local code changes to an already-deployed Lambda and API stack without a full build and deploy cycle.
Why it is used: To iterate fast on serverless by seeing cloud-side changes in seconds instead of redeploying on every save.
# Sync local changessam sync --stack-name my-stack --watchInterview talking point: “The stack must already exist or you get a stack does not exist error, and watch mode only syncs code, so template changes to IAM, environment variables, or memory still need an infra sync or a deploy.”
Q1169: How do you implement CDK Toolkit?
Section titled “Q1169: How do you implement CDK Toolkit?”What it is: The cdk CLI bootstraps an account and region with an asset bucket and roles, synthesizes apps to CloudFormation in cdk.out, then deploys or destroys stacks.
Why it is used: To go from CDK code to deployed CloudFormation with asset uploads, diffs, approval gates, and teardown.
# Bootstrap accountcdk bootstrap
# Deploy stackcdk deploy
# Synthesizecdk synthInterview talking point: “Deploying on an unbootstrapped account fails with the toolkit stack must be deployed, so run cdk bootstrap once per account and region first. cdk diff shows the pending change set, asset hashing skips re-uploading unchanged files, and CDK Pipelines need the newer bootstrap.”
Q1170: How do you use AWS CLI Profiles?
Section titled “Q1170: How do you use AWS CLI Profiles?”What it is: CLI profiles are named blocks in ~/.aws/config and ~/.aws/credentials holding keys, region, output format, and optional role assumption, selected with —profile.
Why it is used: To switch environments or roles cleanly from one machine and script multi-account tasks without exporting globals.
# Configure profileaws configure --profile production
# Use profileaws s3 ls --profile productionInterview talking point: “Precedence is CLI flags over environment variables over profile, so a stray AWS_ACCESS_KEY_ID silently overrides your —profile and hits the wrong account. A profile with role_arn and source_profile assumes a role, and aws configure sso writes SSO-backed profiles.”
Q1171: How do you implement AWS SDK for Python?
Section titled “Q1171: How do you implement AWS SDK for Python?”What it is: boto3 is the AWS SDK for Python offering a high-level resource API of objects and a low-level client matching API operations one to one.
Why it is used: To write Python automation against AWS for Lambda, scripts, and tooling, with object-oriented helpers for core services.
import boto3
ec2 = boto3.resource('ec2')
# Create instanceinstance = ec2.create_instances( ImageId='ami-12345', InstanceType='t3.micro', MinCount=1, MaxCount=1)[0]Interview talking point: “Resources wrap clients with conveniences like wait_until_running but cover only core services, so use client for newer APIs. create_instances requires MinCount and MaxCount and returns while the instance may still be pending, so wait or poll State before treating it as ready.”
Q1172: How do you use boto3 Session?
Section titled “Q1172: How do you use boto3 Session?”What it is: boto3.Session creates an isolated context carrying its own region, credentials, or profile, from which clients and resources are created.
Why it is used: To use multiple identities or regions in one script without polluting global boto3 state.
# Create sessionsession = boto3.Session( region_name='us-east-1', aws_access_key_id='key', aws_secret_access_key='secret')
# Get clients3 = session.client('s3')Interview talking point: “Explicit keys in a session bypass the credential chain only for that session; module-level boto3.client still uses the defaults. A session in us-east-1 against a us-west-2 bucket fails with NoSuchBucket rather than an auth error, and expired temporary credentials mean recreating the session.”
Q1173: How do you implement AWS CLI jq?
Section titled “Q1173: How do you implement AWS CLI jq?”What it is: Pairing the AWS CLI with jq pipes JSON output and extracts or reshapes exactly the fields a script needs.
Why it is used: To turn huge describe responses into usable IDs, states, and addresses for automation pipelines.
# Combine CLI with jqaws ec2 describe-instances | jq '.Reservations[].Instances[] | {Id: .InstanceId, State: .State.Name}'Interview talking point: “The CLI’s own —query flag uses JMESPath, not jq; jq suits richer transforms while —query with —output text gives simple lines. Single-quote the jq program, use jq -r for raw strings, and clear AWS_PAGER or the pager blocks scripts.”
Q1174: How do you use AWS Vault?
Section titled “Q1174: How do you use AWS Vault?”What it is: aws-vault stores AWS keys encrypted in the OS keychain and injects short-lived session credentials into commands run through aws-vault exec.
Why it is used: To use AWS credentials on a laptop without plaintext files or keys leaking into shell history and process environments.
# Store credentialsaws-vault exec production -- aws s3 ls
# Add credentialsaws-vault add productionInterview talking point: “exec exports only temporary access, secret, and session token values for the child process, so the long-term key never reaches the command; getting the raw key requires —no-session, an anti-pattern. With mfa_serial set it prompts for the TOTP code before calling STS.”
Q1175: How do you implement SSO Login?
Section titled “Q1175: How do you implement SSO Login?”What it is: IAM Identity Center SSO login configures a profile with aws configure sso, authenticates through a browser, and caches short-lived credentials for CLI and SDK use.
Why it is used: To replace long-lived access keys with centrally governed, temporary credentials chosen from an organization’s permission sets.
# Configure SSOaws configure sso
# Loginaws sso login --profile dev
# Use profileaws s3 ls --profile devInterview talking point: “If login succeeds but calls are denied, the problem is permission-set scoping rather than authentication, so check the role’s attached policies. Credentials cache under ~/.aws/sso/cache until expiry, and aws sso logout clears them.”
Q1176: How do you use AWS MGN?
Section titled “Q1176: How do you use AWS MGN?”What it is: AWS MGN is agent-based continuous replication that lift-and-shifts physical, VMware, or cloud servers into EC2, with test and cutover launches from replicated state.
Why it is used: To migrate workloads to AWS without rearchitecting, targeting seconds-level RPO and minutes-level RTO at cutover.
# Initialize MGNaws mgn initialize-service
# Create source serveraws mgn create-source-server \ --source-server-id i-12345Interview talking point: “There is no create-source-server call to run yourself; installing the replication agent registers the server and returns the SourceServerID, after which you use initialize-service, start-test, and start-cutover. The staging area runs in your account and bills until cutover.”
Q1177: How do you implement Application Discovery Service?
Section titled “Q1177: How do you implement Application Discovery Service?”What it is: Application Discovery Service finds on-premises servers, installed applications, and network dependencies using an agentless VMware connector or per-server agents, feeding Migration Hub.
Why it is used: To build the migration evidence base of what exists and what talks to what before planning a move.
# Start agentless discoveryaws discovery start-agentless-connection
# Get agentsaws discovery list-agentsInterview talking point: “Agentless discovery covers VMware through the connector while other hosts need agents for dependency mapping, and ADS only plans, it never migrates. Data is regional, so choose the target region first; MGN handles the actual replication.”
Q1178: How do you use Migration Hub Refactor Spaces?
Section titled “Q1178: How do you use Migration Hub Refactor Spaces?”What it is: Refactor Spaces provisions a service network with routes and a proxy so traffic can shift gradually between a monolith and new services.
Why it is used: To incrementally route a small share of requests to new services and increase it without rewriting everything first.
# Create applicationaws mgh create-application \ --name my-appInterview talking point: “The CLI prefix is migrationhubrefactorspaces, not mgh, with create-application taking space-identifier and proxy-type. Routes with path and method decide which service answers, and the service fronts endpoints with API Gateway and VPC links, so you pay for those resources.”
Q1179: How do you implement Database Migration Service?
Section titled “Q1179: How do you implement Database Migration Service?”What it is: DMS migrates databases with minimal downtime using source and target endpoints, a replication instance, and a task doing full load plus optional ongoing change data capture.
Why it is used: To move data between engines into Aurora or RDS with continuous sync during cutover.
# Create endpointaws dms create-endpoint \ --endpoint-identifier my-source \ --endpoint-type source \ --engine-name mysql \ --mysql-settings '{"Username":"admin","Password":"pass","ServerName":"db.example.com"}'Interview talking point: “Change data capture requires the source to have row-format binlog or WAL enabled, otherwise the task degrades to full load only, and the replication instance must reach both endpoints across security groups. For heterogeneous moves SCT converts schema first while DMS moves rows.”
Q1180: How do you use Schema Conversion Tool?
Section titled “Q1180: How do you use Schema Conversion Tool?”What it is: AWS Schema Conversion Tool is a desktop application that converts schema DDL, stored procedures, functions, and views from one database engine to another.
Why it is used: To convert legacy Oracle or SQL Server schemas before moving data with DMS in heterogeneous migrations.
# Run SCT locally:# 1. Connect to source database# 2. Connect to target# 3. Run assessment# 4. Convert schemaInterview talking point: “SCT converts schema, never data; DMS moves data, and the assessment report grading conversion complexity is the deliverable for approvals. Untranslatable PL/SQL still needs manual edits, and the workflow is connect source, connect target, assess, convert, then apply.”
Q1181: How do you implement DataSync Agent?
Section titled “Q1181: How do you implement DataSync Agent?”What it is: DataSync moves large file datasets between on-premises NFS or SMB and S3, EFS, or FSx using an agent VM with scheduled, validated transfers.
Why it is used: To get initial and ongoing file data into AWS reliably and faster than VPN or scp, with metrics and retries.
# Create agent activationaws datasync create-agent \ --agent-name my-agentInterview talking point: “The sequence is deploy the agent VM, activate it with the key from its web UI, create source and target locations, then create and start a task; an offline agent leaves tasks queued. TransferMode CHANGED limits each run to changed data.”
Q1182: How do you use Transfer Family?
Section titled “Q1182: How do you use Transfer Family?”What it is: Transfer Family provides managed SFTP, FTPS, or FTP servers backed by S3 or EFS, with service-managed users or your own identity provider.
Why it is used: To give external partners SFTP access to S3 without running an SFTP server yourself.
# Create serveraws transfer create-server \ --protocols SFTP \ --identity-provider-type SERVICE_MANAGEDInterview talking point: “Each user needs an IAM role whose policy grants their S3 access, and a missing role causes The role is not authorized errors. The default endpoint is public, so set endpoint type VPC for private subnets when your application server cannot reach the internet.”
Q1183: How do you implement Storage Gateway?
Section titled “Q1183: How do you implement Storage Gateway?”What it is: Storage Gateway is an on-premises virtual appliance providing NFS or SMB access to S3, iSCSI volumes backed by EBS, or virtual tape to S3 and Glacier.
Why it is used: To extend S3, backup, and disaster recovery to on-premises sites without migrating data, replacing physical tape libraries.
# Create file gatewayaws storagegateway create-gateway \ --gateway-name my-gateway \ --gateway-type FILE_S3Interview talking point: “Create the gateway, activate it with the activation key the appliance prints, then create a file share pointing at an S3 location; an inactive gateway cannot share files. The gateway’s IAM role needs S3 permissions, and cache sizing is the cost lever.”
Q1184: How do you use Snow Family Devices?
Section titled “Q1184: How do you use Snow Family Devices?”What it is: Snow Family devices are physical appliances for shipping data into or out of AWS: Snowball Edge at 80TB, Snowcone at 8TB, plus edge compute.
Why it is used: To move terabytes to petabytes when network uplinks cannot, including air-gapped sites and bulk migrations.
# Create jobaws snowball create-job \ --job-type EXPORT \ --address-id address-idInterview talking point: “create-job takes job-type IMPORT or EXPORT plus address-id, role-arn, and a KMS key, and describe-job states track shipping. Snowball Edge also runs local EC2 and Lambda workloads with job type LOCAL_USE, and transfer time excludes multi-day round-trip shipping.”
Q1185: How do you implement Outposts Installation?
Section titled “Q1185: How do you implement Outposts Installation?”What it is: Outposts brings AWS rack or server hardware into your data center; AWS delivers and installs it, you register it, then deploy EC2, EBS, EKS, or RDS locally.
Why it is used: For workloads needing on-premises latency, data residency, or legacy access while keeping native AWS APIs.
# Contact AWS Outposts:# 1. Order Outpost# 2. AWS delivers and installs# 3. Register in console# 4. Deploy workloadsInterview talking point: “Outposts is effectively one availability zone of AWS in your building, so capacity is physical with no elastic scale-out past what you bought, unlike a region. Connectivity back uses the Local Gateway, and the attached parent region defines which regional APIs serve it.”
Q1186: How do you use Local Zones?
Section titled “Q1186: How do you use Local Zones?”What it is: Local Zones extend a region with subnets and instances inside a metro area, such as us-east-1-nyc-1, for single-digit-millisecond latency.
Why it is used: For latency-sensitive applications needing metro-level responsiveness without justifying a full new region.
# Describe Local Zonesaws ec2 describe-availability-zones \ --filters "Name=zone-type,Values=local-zone"Interview talking point: “You must opt in with modify-availability-zone-group before creating a subnet there, and Local Zone pricing typically exceeds the parent region with a narrower service catalog and tighter capacity. For high availability, pair a Local Zone with the parent region rather than relying on one.”
Q1187: How do you implement Wavelength Zones?
Section titled “Q1187: How do you implement Wavelength Zones?”What it is: Wavelength Zones embed compute at the edge of 5G carrier networks so devices reach instances over the carrier path without crossing the region.
Why it is used: For ultra-low-latency 5G workloads like augmented reality, game streaming, and IoT control where every millisecond matters.
# Create subnet in Wavelength Zoneaws ec2 create-subnet \ --vpc-id vpc-123 \ --cidr-block 10.0.1.0/24 \ --availability-zone us-east-1-wl1-nyc-wl-1Interview talking point: “The control plane stays in the parent region while data stays local, and a Wavelength subnet has no internet gateway, so egress goes through the carrier. The service catalog is narrow, opt-in via modify-availability-zone-group is required first, and choose Wavelength only when the 5G path matters.”
Q1188: How do you use AWS Global Accelerator?
Section titled “Q1188: How do you use AWS Global Accelerator?”What it is: Global Accelerator gives your application two static anycast IPs that route traffic from the nearest AWS edge over the AWS backbone to healthy endpoints.
Why it is used: For global applications needing lower latency, static IPs, and fast failover across regions for any TCP or UDP traffic.
# Create acceleratoraws globalaccelerator create-accelerator \ --name my-acceleratorInterview talking point: “Traffic dials ramp a region from zero to one hundred percent for clean cutovers, and endpoint health checks drop unhealthy targets. Unlike CloudFront it does not cache; the common architecture puts Global Accelerator in front of CloudFront or an ALB.”
Q1189: How do you implement Direct Connect Gateway?
Section titled “Q1189: How do you implement Direct Connect Gateway?”What it is: A Direct Connect Gateway lets one Direct Connect private virtual interface reach VPCs and transit gateways across many regions through associations.
Why it is used: To consolidate Direct Connect so one connection serves VPCs in different regions without a private VIF per region.
# Create gatewayaws directconnect create-direct-connect-gateway \ --direct-connect-gateway-name my-gatewayInterview talking point: “The gateway is not a router; it propagates BGP prefixes between the VIF and associated gateways, with AllowedPrefixes controlling what each side advertises. Prefer associating a Transit Gateway, watch the per-VIF BGP route limit, and use Transit Gateway route tables for actual segregation.”
Q1190: How do you use VPN CloudHub?
Section titled “Q1190: How do you use VPN CloudHub?”What it is: VPN CloudHub lets several on-premises sites, each with its own VPN connection, terminate on one virtual private gateway and route between themselves through AWS.
Why it is used: To build hub-and-spoke site-to-site connectivity without buying inter-site circuits between branches.
# Create VPN with multiple sitesaws ec2 create-vpn-connection \ --customer-gateway-id cgw-123 \ --type ipsec.1 \ --vpn-gateway-id vpg-123 \ --options '{"CloudHub":{"Enabled":true,"RemoteIpes":["10.0.0.0/16","192.168.0.0/16"]}}'Interview talking point: “There is no CloudHub option flag on create-vpn-connection; CloudHub is simply multiple VPNs on the same VGW with BGP or static routes exchanged between them. Each connection provisions two tunnels, and overlapping CIDRs between sites must be avoided or the gateway cannot disambiguate.”
Q1191: How do you implement Transit Gateway DMZ?
Section titled “Q1191: How do you implement Transit Gateway DMZ?”What it is: A Transit Gateway DMZ design uses TGW route tables to steer spoke traffic through a shared security VPC holding firewalls for inspection.
Why it is used: To centralize egress inspection so outbound traffic from many VPCs hairpins through one firewall VPC.
# Create Transit Gateway with route tablesaws ec2 create-transit-gateway \ --description "DMZ TGW" \ --options '{"AmazonAsn":64512,"AutoAcceptSharedAttachments":"enable"}'Interview talking point: “TGW route tables only learn routes propagated or associated from attachments, and that per-table isolation is the segmentation primitive. The modern pattern pairs Gateway Load Balancer with TGW, blackhole routes deny by default, and RAM sharing handles cross-account attachments.”
Q1192: How do you use PrivateLink Service?
Section titled “Q1192: How do you use PrivateLink Service?”What it is: A PrivateLink endpoint service exposes an application behind an NLB or GWLB so other VPCs and accounts reach it privately through interface endpoints.
Why it is used: To share or sell a service privately with no public exposure and no traffic leaving the AWS network.
# Create VPC endpoint serviceaws ec2 create-vpc-endpoint-service-configuration \ --service-name com.amazonaws.us-east-1.my-service \ --network-load-balancer-arns [nlb-arn]Interview talking point: “The real service name looks like com.amazonaws.vpce.region.vpce-svc-id, not the regional placeholder in the example. Endpoints start PendingAcceptance unless acceptance is disabled, modify-vpc-endpoint-service-permissions allowlists principals, and only NLB or GWLB backends are supported, so put an NLB in front of an ALB app.”
Q1193: How do you implement VPC Mirror?
Section titled “Q1193: How do you implement VPC Mirror?”What it is: VPC Traffic Mirroring copies packets from a source ENI to a mirror target, using a filter that decides what to copy, bound together by a session.
Why it is used: To capture traffic for intrusion detection, security monitoring, and troubleshooting without an inline appliance or TAP.
# Create traffic mirror sessionaws ec2 create-traffic-mirror-session \ --network-interface-id eni-123 \ --traffic-mirror-target-id tmt-123 \ --traffic-mirror-filter-id tmf-123 \ --session-number 1Interview talking point: “Mirroring requires Nitro-based instances and the target normally sits in the same VPC, with session-number ranking overlapping sessions. Copies are plaintext for your collector to handle, so size it for the volume because an undersized appliance will drop packets.”
Q1194: How do you use DNS Firewall?
Section titled “Q1194: How do you use DNS Firewall?”What it is: Route 53 Resolver DNS Firewall evaluates outbound DNS from your VPC against rule groups of domain lists and allows, alerts, or blocks each query.
Why it is used: To block malware domains, phishing, and DNS exfiltration across every workload in a VPC without installing agents.
# Create firewall rule groupaws route53resolver create-firewall-rule-group \ --name my-rules
# Add rulesaws route53resolver create-firewall-rule \ --name block-malware \ --firewall-rule-group-id group-id \ --action BLOCK \ --block-response NODATAInterview talking point: “A rule group does nothing until associate-firewall-rule-group binds it to a VPC, the classic reason rules seem ignored. Block responses choose NODATA, NXDOMAIN, or OVERRIDE for sinkholing, and it complements Network Firewall by stopping connections at the DNS layer.”
Q1195: How do you implement IPAM?
Section titled “Q1195: How do you implement IPAM?”What it is: IP Address Manager centrally plans IP space, discovering VPC and on-premises CIDRs into hierarchical pools so allocations never collide.
Why it is used: To stop CIDR collisions and ad-hoc subnetting with one view of all IP space and utilization.
# Create IPAMaws ec2 create-ipam \ --description "IPAM" \ --operating-regions '[{"RegionName":"us-east-1"}]'Interview talking point: “VPCs created with an IPAM pool and netmask length get CIDRs auto-allocated, and each IPAM has private and public scopes. Seeing other accounts requires the Advanced tier plus organization integration, and billing is per IPAM-hour rather than per IP.”
Q1196: How do you use VPC Reachability Analyzer?
Section titled “Q1196: How do you use VPC Reachability Analyzer?”What it is: Reachability Analyzer models routes, security groups, NACLs, and gateways to compute whether a source can reach a destination, reporting the path and blocking rule without sending packets.
Why it is used: To answer why can’t A reach B in seconds instead of launching test instances and eyeballing consoles.
# Analyze pathaws network-insights-analyzer start-path-analysis \ --source '{"ComponentId":"i-12345"}' \ --destination '{"ComponentId":"i-67890"}'Interview talking point: “The real CLI flow is create-network-insights-path, start-network-insights-analysis, then get-network-insights-analysis, not a bare start-path-analysis. It only inspects AWS configuration, so a host firewall or dead application still reports REACHABLE, and specifying the destination port matters or an all-port test gives a false positive.”
Q1197: How do you implement Network Access Analyzer?
Section titled “Q1197: How do you implement Network Access Analyzer?”What it is: Network Access Analyzer runs access-scope analyses over your network configuration to find reachable paths that should not exist and reports findings.
Why it is used: To proactively audit what can reach what, finding isolation violations before an attacker does.
# Start network access analysisaws network-insights-analyzer start-network-insights-analysis \ --network-insights-path-config '{"Source":{"AccountId":"123456789012","ResourceType":"ec2-instance","Id":"i-123"},"Destination":{"AccountId":"123456789012","ResourceType":"ec2-instance","Id":"i-456"}}'Interview talking point: “Create an access scope with match paths describing the traffic you want detected, then start-network-insights-access-scope-analysis and poll for findings. The distinction: Reachability Analyzer answers can X reach Y on demand, while Network Access Analyzer audits what is reachable that you prohibited.”
Q1198: How do you use Internet Monitor?
Section titled “Q1198: How do you use Internet Monitor?”What it is: CloudWatch Internet Monitor creates monitors that sample internet-path availability and latency per city and ASN for traffic to your listed resources.
Why it is used: To see internet path problems between users and your app, like why one city sees poor performance.
# Create monitoraws internetmonitor create-monitor \ --monitor-name my-monitor \ --internet-measurements-log-delivery '{ "s3Config":{"bucketName":"my-bucket"} }'Interview talking point: “It observes traffic passively with no end-user instrumentation, produces health events per city or network you can list, and traffic-percentage-to-monitor dials sampling to control cost. Findings typically drive rerouting through Global Accelerator or Route 53 rather than application changes.”
Q1199: How do you implement VPC Lattice?
Section titled “Q1199: How do you implement VPC Lattice?”What it is: VPC Lattice is a managed service-to-service networking layer where VPCs and services attach to a service network with routing, auth policies, and observability.
Why it is used: To standardize inter-service communication with discovery, authorization, and traffic shifting without per-service wiring.
# Create service networkaws vpc-lattice create-service-network \ --name my-network
# Create serviceaws vpc-lattice create-service \ --name my-serviceInterview talking point: “Lattice differs from the retired App Mesh by being cross-VPC and cross-account with per-service IAM auth and resource policies, while ECS Service Connect is ECS-only. Attach VPCs with service-network-vpc-association, share via RAM, and use weighted listeners for canary shifts.”
Q1200: How do you use Verified Access?
Section titled “Q1200: How do you use Verified Access?”What it is: Verified Access provides zero-trust access to internal apps: a trust provider authenticates users, groups bundle apps and policies, and endpoints evaluate every request without a VPN.
Why it is used: For remote access to internal applications with identity and device posture checks instead of VPN software.
# Create Verified Access groupaws ec2 create-verified-access-group \ --description "Corporate apps" \ --tag-specifications 'ResourceType=verified-access-group,Tags=[{Key=Department,Value=IT}]'Interview talking point: “Access policies are Cedar expressions evaluated per request, trust providers include Okta or Azure AD OIDC and IAM Identity Center, and device posture comes from your MDM. The endpoint fronts an ALB in its VPC, so CNAME your application domain to the endpoint URL.”
Additional Interview Questions 1201-1300
Section titled “Additional Interview Questions 1201-1300”Q1201: How do you implement SageMaker Training?
Section titled “Q1201: How do you implement SageMaker Training?”What it is: SageMaker Training runs managed training jobs: you supply a container image, input data channels, instance config, and an output S3 path; SageMaker provisions compute and returns model artifacts.
Why it is used: Runs model training at scale without managing EC2, the managed compute half of the ML lifecycle.
import boto3
sagemaker = boto3.client('sagemaker')
# Create training jobresponse = sagemaker.create_training_job( TrainingJobName='my-job', AlgorithmSpecification={'TrainingImage': 'image-uri', 'TrainingInputMode': 'File'}, RoleArn='role-arn', InputDataConfig=[{'ChannelName': 'train', 'DataSource': {'S3DataSource': {'S3Uri': 's3://bucket/'}}}], OutputDataConfig={'S3OutputPath': 's3://output/'}, ResourceConfig={'InstanceType': 'ml.m5.xlarge', 'InstanceCount': 1}, StoppingCondition={'MaxRuntimeInSeconds': 3600})Interview talking point: “The role matters: RoleArn must be a SageMaker execution role with S3 read on input and PutObject on output, so an instant AccessDenied failure is almost always the role. Always set StoppingCondition.MaxRuntimeInSeconds or a looping job bills forever, and model artifacts land at the output path under model.tar.gz.”
Q1202: How do you use SageMaker Endpoints?
Section titled “Q1202: How do you use SageMaker Endpoints?”What it is: SageMaker endpoints host trained models for real-time inference: an endpoint config names the model and instance type, then create_endpoint deploys it behind a stable HTTPS URL invoked with invoke_endpoint.
Why it is used: Serves predictions at low latency with autoscaling, traffic variants, and runtime updates, the managed hosting layer.
# Create endpoint configsagemaker.create_endpoint_config( EndpointConfigName='config-name', ProductionVariants=[{ 'VariantName': 'variant', 'ModelName': 'model-name', 'InstanceType': 'ml.m5.xlarge', 'InitialInstanceCount': 1 }])
# Deploysagemaker.create_endpoint( EndpointName='endpoint-name', EndpointConfigName='config-name')Interview talking point: “A model must exist before deployment or you get ValidationException: Could not find model, and poll describe_endpoint until InService before invoking. Production variants enable A/B traffic splits, while autoscaling runs through Application Auto Scaling on sagemaker:VariantInvocationsPerInstance, not a SageMaker-native scaler.”
Q1203: How do you implement SageMaker Neo?
Section titled “Q1203: How do you implement SageMaker Neo?”What it is: SageMaker Neo compiles trained models for target hardware, taking a model, framework, and input tensor shape and producing an optimized artifact loadable by the Neo or DLR runtime on device.
Why it is used: Makes models run fast on specific hardware like Jetson or Raspberry Pi, the inference optimization step before edge deployment.
# Compile modelsagemaker.create_compilation_job( CompilationJobName='my-job', RoleArn='role-arn', InputConfig={ 'S3Uri': 's3://input/model.tar.gz', 'DataInputConfig': '{"input": [1,224,224,3]}', 'Framework': 'TENSORFLOW' }, OutputConfig={ 'S3OutputLocation': 's3://output/', 'TargetDevice': 'ml_armnn' })Interview talking point: “The input shape is baked in, so a wrong tensor shape JSON fails the compile. Target selection is TargetDevice for named devices like jetson_nano or TargetPlatform for a custom Os, Arch, and Accelerator combination, and an invalid name raises ValidationException: Unsupported target device. Exotic unsupported operators break compilation, so keep models compiler-friendly.”
Q1204: How do you use SageMaker Ground Truth?
Section titled “Q1204: How do you use SageMaker Ground Truth?”What it is: Ground Truth builds labeled datasets: create_labeling_job points at unlabeled S3 data plus a task definition and routes work to worker teams, producing a labeled dataset and manifest.
Why it is used: Labels training data at scale with optional model-assisted auto-labeling, so humans only correct uncertain samples.
# Create labeling jobsagemaker.create_labeling_job( JobName='my-job', LabelAttributeName='labels', InputConfig={ 'DataSource': {'S3DataUri': 's3://input/'} }, OutputConfig={ 'S3OutputPath': 's3://output/' }, RoleArn='role-arn', LabelingJobAlgorithmSpecification={ 'LabelingJobAlgorithmArn': 'arn:aws:sagemaker:region:algorithm:labeling-job' })Interview talking point: “The #1 setup error is pointing S3DataUri at a folder prefix; it must be the manifest file itself or validation fails and no images are found. Worker routing moved into HumanTaskConfig, which carries UiConfig, NumberOfHumanWorkersPerDataObject, and the WorkteamArn that decides who does the labeling.”
Q1205: How do you implement Rekognition Image Analysis?
Section titled “Q1205: How do you implement Rekognition Image Analysis?”What it is: Rekognition image analysis applies pre-trained vision APIs to images from S3 or raw bytes: detect_labels, detect_faces, detect_text, recognize_celebrities, and detect_moderation_labels.
Why it is used: Extracts insight from images at scale with no model training: classify photos, find faces, moderate uploads.
import boto3
rekognition = boto3.client('rekognition')
# Detect labelsresponse = rekognition.detect_labels( Image={'S3Object': {'Bucket': 'my-bucket', 'Name': 'image.jpg'}}, MaxLabels=10, MinConfidence=80)Interview talking point: “MinConfidence filters out low-scoring labels, which is the usual answer when you get fewer results than expected, and labels carry a Parents hierarchy like Car under Vehicle. Bytes input has a size cap so oversized images throw ImageTooLargeException, and S3-backed calls need s3:GetObject on the bucket or they fail with AccessDeniedException.”
Q1206: How do you use Rekognition Video Analysis?
Section titled “Q1206: How do you use Rekognition Video Analysis?”What it is: Rekognition video analysis runs recognition on videos through asynchronous jobs: start_label_detection returns a JobId, then you poll get_label_detection until JobStatus is SUCCEEDED and page results.
Why it is used: Analyzes video content like CCTV footage asynchronously, the video pipeline counterpart to the sync image API.
# Start label detectionresponse = rekognition.start_label_detection( Video={'S3Object': {'Bucket': 'my-bucket', 'Name': 'video.mp4'}}, MinConfidence=80)
# Get resultsresults = rekognition.get_label_detection(JobId=response['JobId'])Interview talking point: “Every video API is asynchronous, start_* then get_*, and a FAILED status with StatusMessage usually means bad S3 permissions or an unsupported format rather than a service fault. Results arrive per 60-second segment with a Timestamp in milliseconds, and passing NotificationChannel lets the job post completion to SNS instead of polling.”
Q1207: How do implement Textract Document Analysis?
Section titled “Q1207: How do implement Textract Document Analysis?”What it is: Textract extracts text and structure from documents: analyze_document with TABLES and FORMS returns Blocks representing pages, lines, tables, cells, and key-value pairs; async start_document_analysis handles multi-page.
Why it is used: Digitizes invoices, forms, and multi-page documents into machine-readable tables and key-value pairs, beyond plain OCR.
# Analyze documentresponse = textract.analyze_document( Document={'S3Object': {'Bucket': 'bucket', 'Name': 'doc.pdf'}}, FeatureTypes=['TABLES', 'FORMS'])
# Get tablesfor block in response['Blocks']: if block['BlockType'] == 'TABLE': print(block['Id'])Interview talking point: “Sync analyze_document covers only one page; anything multi-page must use the async start_document_analysis to get_document_analysis flow with NextToken paging. FORM results come as KEY_VALUE_SET blocks split into KEY and VALUE children that you rejoin through Relationships, which is how you parse a form without regex.”
Q1208: How do you use Transcribe Medical?
Section titled “Q1208: How do you use Transcribe Medical?”What it is: Transcribe Medical converts clinical audio to text with a medical vocabulary: start_medical_transcription_job takes specialty, type, and media settings, then get_medical_transcription_job returns the transcript.
Why it is used: Documents telehealth encounters automatically with HIPAA-eligible speech-to-text built for the clinical domain.
# Start medical transcriptiontranscribe.start_medical_transcription_job( MedicalTranscriptionJobName='my-job', LanguageCode='en-US', MediaFormat='mp4', Media={'MediaFileUri': 's3://bucket/audio.mp4'}, OutputBucketName='output-bucket', Specialty='PRIMARYCARE')Interview talking point: “Specialty=PRIMARYCARE and Type=DICTATION or CONVERSATION belong to the older v1 medical API; the newer v2 and the 2023 StartMedicalScribeJob dropped that shape, with Scribe generating structured clinical notes directly. The media file must be in the same region as the call, and transcription is billed per audio minute.”
Q1209: How do you implement Translate Custom Terminology?
Section titled “Q1209: How do you implement Translate Custom Terminology?”What it is: Translate custom terminology pins domain terms via import_terminology, which uploads a CSV or TMX glossary so specific source terms keep your approved target translations.
Why it is used: Keeps brand and legal phrasing consistent across translations, adding domain vocabulary control on the generic model.
# Upload terminologytranslate.import_terminology( Name='my-terminology', MergeStrategy='OVERWRITE', TerminologyData={ 'FileUri': 's3://bucket/terminology.csv', 'Format': 'CSV' })Interview talking point: “Terminologies are language-direction specific: one uploaded for en to de only applies to en to de jobs, and you pass it per call via TerminologyNames. MergeStrategy OVERWRITE replaces the whole glossary where MERGE combines, and terminology matches terms rather than sentences, so changed glossaries require re-running translation.”
Q1210: How do you use Comprehend Medical?
Section titled “Q1210: How do you use Comprehend Medical?”What it is: Comprehend Medical extracts entities, relationships, and traits from clinical text: detect_entities_v2 returns medications, conditions, and anatomy, while detect_icd10_cm and detect_rx_norm map to coding systems.
Why it is used: Mines EHR notes programmatically for coding and analytics, a HIPAA-eligible healthcare NLP layer feeding downstream systems.
# Detect entitiesresponse = comprehendmedical.detect_entities_v2( Text="Patient has diabetes and takes Metformin 500mg twice daily")
# Get ICD-10 codesicd = comprehendmedical.detect_icd10_cm( Text="Patient has diabetes")Interview talking point: “The NEGATION trait explains why a note like patient denies pain still reads as positive if you ignore it, and detect_phi returns the spans you must redact before sharing. Single detect calls cap text around 20KB so split long notes, and results are statistical, needing human review before billing-grade coding.”
Q1211: How do you implement Lex Bot Creation?
Section titled “Q1211: How do you implement Lex Bot Creation?”What it is: Amazon Lex builds conversational bots from intents, sample utterances, slots, and fulfillment hooks, combining natural language understanding with a dialog model that can call Lambda.
Why it is used: Stands up a chatbot that collects slots and fulfills requests, feeding Lambda, Connect, or an IVR.
# Create intentlex.create_intent( intentName='OrderFlowers', description='Order flowers', sampleUtterances=['I want to order flowers', 'Order flowers'], fulfillmentActivity={'type': 'CodeHook', 'codeHook': {'uri': 'lambda-arn', 'messageVersion': '1.0'}})Interview talking point: “The lowercase lex client with intentName is Lex V1; current work uses lexv2-models with botId, botLocaleId, and the lexv2-runtime recognize_text call, which interviewers expect you to know. Also, creating an intent alone answers nothing: it must sit inside a bot with a locale and alias, and the fulfillment Lambda must return the dialogAction or sessionState JSON.”
Q1212: How do you use Kendra Index?
Section titled “Q1212: How do you use Kendra Index?”What it is: Amazon Kendra is enterprise search: create_index makes the index, data sources like S3 or SharePoint sync documents into it, and query serves natural-language search results.
Why it is used: Searches internal knowledge with natural language beyond keyword grep, using connectors and permission-aware results.
# Create data sourcekendra.create_data_source( IndexId='index-id', Name='my-ds', Type='S3', DataSourceConfiguration={'S3Configuration': {'BucketName': 'bucket'}})Interview talking point: “The index needs an execution RoleArn at creation or it fails immediately, then data reaches the index only after start-data-source-sync-job. Exclusion patterns clean junk out of results, and without per-document ACL configuration every user sees everything, which is the security gotcha of permission-aware search.”
Q1213: How do you implement Personalize Campaigns?
Section titled “Q1213: How do you implement Personalize Campaigns?”What it is: Amazon Personalize trains recommendation models from interaction data: a dataset group feeds a solution with a recipe, a trained solution version deploys as a campaign serving get_recommendations.
Why it is used: Adds personalized recommendations like users also bought without training models yourself, the managed recommender layer.
# Create solutionpersonalize.create_solution( name='my-solution', datasetGroupArn='group-arn', recipeArn='arn:aws:personalize:::recipe/user-personalization')
# Create campaignpersonalize.create_campaign( name='my-campaign', solutionVersionArn='version-arn', minProvisionedTPS=1)Interview talking point: “A solution is just the recipe; the trained artifact is a solution version, and skipping create_solution_version before create_campaign is the number one pipeline error. Runtime calls go through the separate personalize-runtime client, and campaigns bill on minProvisionedTPS whether idle or busy, which explains surprise bills.”
Q1214: How do you use Forecast Predictor?
Section titled “Q1214: How do you use Forecast Predictor?”What it is: Amazon Forecast is managed time-series AutoML: datasets in a group carry a schema, create_predictor trains a model, and create_forecast produces future predictions with quantile bounds.
Why it is used: Forecasts demand, inventory, or traffic automatically, picking ARIMA, ETS, or deep learning models for you.
# Create datasetforecast.create_dataset( Domain='RETAIL', DatasetType='TARGET_TIME_SERIES', DatasetName='my-dataset')Interview talking point: “create_dataset is incomplete without a Schema JSON matching the domain’s expected attributes, and datasets show no data until a separate create_dataset_import_job loads the CSV with an IAM role. Output includes p10, p50, and p90 quantiles, which is your answer to how sure the forecast is.”
Q1215: How do you implement Lookout for Equipment?
Section titled “Q1215: How do you implement Lookout for Equipment?”What it is: Lookout for Equipment detects anomalies in industrial sensor data: define a dataset schema of timestamp and measure columns, import S3 data, train a model on normal operation.
Why it is used: Enables predictive maintenance by flagging sensor deviations before failure, replacing hand-tuned thresholds with learned baselines.
# Create datasetlookoutequipment.create_dataset( DatasetName='my-dataset', DatasetSchema={'Components': [{'Name': 'timestamp', 'Type': 'TIMESTAMP'}, {'Name': 'value', 'Type': 'MEASURE'}]})Interview talking point: “Sensor columns missing from the schema are silently dropped, which explains vanished data. Training alone also does nothing visible: you must deploy an inference scheduler that reads live data and writes is_anomaly and anomaly_score results to S3, and it reports which measure sensors contributed to each anomaly.”
Q1216: How do you use DevOps Guru Anomaly Detection?
Section titled “Q1216: How do you use DevOps Guru Anomaly Detection?”What it is: DevOps Guru is ML-powered ops anomaly detection: enable-resource-collection scopes it to stacks or tags, and it surfaces reactive behavior anomalies and proactive predicted issues as insights.
Why it is used: Catches slow latency drift, cost climbs, and throttling that fixed CloudWatch thresholds miss, with no threshold tuning.
# Enable DevOps Guruaws devops-guru enable-resource-collection
# Get insightsaws devops-guru list-insights --region us-east-1Interview talking point: “enable-resource-collection needs an explicit scope, either CloudFormation stack names or tag filters, so enabling it with nothing attached yields no insights. Delivery goes through put-notification-channel to an SNS topic, and coverage is limited to supported AWS resources like Lambda, DynamoDB, and RDS, not your custom services.”
Q1217: How do you implement CodeGuru Profiler?
Section titled “Q1217: How do you implement CodeGuru Profiler?”What it is: CodeGuru Profiler samples a running application through an agent SDK, shipping CPU and memory profiles to the service, which builds flame graphs and ranked optimization findings.
Why it is used: Finds the real production bottleneck, which method burns CPU, without manual instrumentation or code changes.
import aws_cg_profiler
profiler = aws_cg_profiler.Profiler( profiling_group_name='my-group')
with profiler: # Code to profile process_data()Interview talking point: “The profiling group should exist before the agent runs, and the process needs codeguru-profiler:PostAgentProfile or uploads fail silently with empty console data. Support covers Java and Python only, with Lambda as a special compute platform, so C# and .NET are out of scope.”
Q1218: How do you use CodeGuru Reviewer?
Section titled “Q1218: How do you use CodeGuru Reviewer?”What it is: CodeGuru Reviewer runs automated static reviews: associate-repository attaches a repo, and the service flags security vulnerabilities, concurrency bugs, resource leaks, and AWS API anti-patterns with fixes.
Why it is used: Catches code-quality and security issues automatically before human review, the static analysis counterpart to runtime profiling.
# Associate repositoryaws codeguru-reviewer associate-repository \ --repository '{"CodeCommit":{"Name":"my-repo"}}'Interview talking point: “The repository JSON shape depends on source: CodeCommit needs only its name, while GitHub and Bitbucket require a connection-arn from CodeStar Connections. Wait for association state ASSOCIATED before expecting reviews, and put-recommendation-feedback tunes future scans.”
Q1219: How do you implement IoT Core Policies?
Section titled “Q1219: How do you implement IoT Core Policies?”What it is: IoT Core policies are JSON documents granting device principals like certificates permission to connect, publish, and subscribe, attached to a certificate to take effect.
Why it is used: Controls what each device may do, the device-side authorization layer distinct from IAM API permissions.
{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": ["iot:Publish", "iot:Subscribe"], "Resource": "arn:aws:iot:us-east-1:123456789012:topic/my-topic" }]}Interview talking point: “A policy that is never attached to a certificate authorizes nothing, the top cause of devices failing to connect. Subscribe on a topicfilter also needs iot:Receive on the topic or messages never arrive, and policy variables like ${iot:Connection.Thing.ThingName} let one policy template serve a whole fleet.”
Q1220: How do you use IoT Things Graph?
Section titled “Q1220: How do you use IoT Things Graph?”What it is: IoT Things Graph was a visual orchestrator for IoT workflows, defined as GraphQL flow templates deployed as flow executions wiring devices and services together.
Why it is used: Orchestrated multi-device automations, but the service is retired, so it only matters as a historical answer.
# Create flow templateiotthingsgraph.create_flow_template( Definition={'flowTemplate': {...}})Interview talking point: “The real interview value is knowing Things Graph is end of life and unsupported for new builds. The modern answer for the same job is IoT Events for condition detection, Step Functions for orchestration, and IoT Core rules for routing messages.”
Q1221: How do you implement IoT Analytics Datasets?
Section titled “Q1221: How do you implement IoT Analytics Datasets?”What it is: IoT Analytics is an IoT-focused pipeline: a channel ingests messages, a datastore stores them, and create_dataset runs a SQL query whose results publish to S3.
Why it is used: Turns raw device telemetry into queryable, export-ready datasets with IoT schema handling built in.
# Create datasetiotanalytics.create_dataset( datasetName='my-dataset', actions=[{ 'actionName': 'query', 'queryAction': {'sqlQuery': 'SELECT * FROM my_datastore'} }])Interview talking point: “A dataset action must contain sqlQuery or it returns nothing, and a topic rule with an iotAnalytics channel action is how data enters the channel. Positioning matters: IoT Analytics is batch SQL over stored telemetry, not real-time streaming, which is Kinesis, and Timestream is the alternative for time-series.”
Q1222: How do you use IoT Events Detector?
Section titled “Q1222: How do you use IoT Events Detector?”What it is: IoT Events watches inputs with detector models, state machines whose states have conditions and actions that recognize patterns like repeated alarms and trigger SNS or Lambda.
Why it is used: Detects complex conditions in device data rather than just forwarding it, without writing custom state code.
# Create detector modeliotevents.create_detector_model( detectorModelName='my-detector', detectorModelDefinition={...})Interview talking point: “Each device gets its own detector instance keyed by a variable, which is the answer when you need per-device state instead of a stateless function. States support setTimer and clearTimer for patterns like no response within ten minutes, and a model whose SNS action lacks its role fails with AccessDeniedException at runtime.”
Q1223: How do you implement Greengrass V2?
Section titled “Q1223: How do you implement Greengrass V2?”What it is: Greengrass V2 runs on edge devices as a nucleus service that executes deployable components, local compute and ML that keeps working offline and syncs with IoT Core.
Why it is used: Runs AWS-style compute at the edge with cloud-managed updates, essentially IoT plus Lambda on the device.
# Install Greengrass nucleuswget -r -O installer https://d2c8v6ly9rlygo.cloudfront.net/latest/bin
# Installsudo ./installer autoInterview talking point: “Greengrass is a real OS service on the device, not a cloud service, so sizing and updates are on you. Deployments target thing groups, and component permissions come from the Greengrass role set at install, which is why a component that cannot reach S3 is almost always a role problem.”
Q1224: How do you use SiteWise Portal?
Section titled “Q1224: How do you use SiteWise Portal?”What it is: IoT SiteWise ingests industrial equipment data, models it as asset hierarchies with properties and measurements, and presents it through portals for visualization and alarms.
Why it is used: Collects and visualizes OT data like PLCs and OPC-UA servers, the cloud SCADA answer for factories.
# Create portalsitewise.create-portal( portalName='my-portal', portalAuthMode='IAM')Interview talking point: “create_portal requires a roleArn, without which the portal cannot access your SiteWise data, and portalAuthMode chooses IAM users or SSO through Identity Center. Metrics compute on a schedule, typically one minute, so dashboards lag raw measurements by the metric window.”
Q1225: How do you implement IoT Fleet Hub?
Section titled “Q1225: How do you implement IoT Fleet Hub?”What it is: IoT Fleet Hub builds a hosted web dashboard over your device fleet, showing device state, shadows, and search, with users signing in through IAM Identity Center or Cognito.
Why it is used: Gives ops and support teams fleet visibility without engineering a custom dashboard for non-developers.
# Create applicationaws iotfleethub create-application \ --application-name my-app \ --role-arn role-arnInterview talking point: “create-application needs a properly scoped IAM role, and an invalid or missing role fails validation at creation. The app draws from AWS IoT fleet indexing, so if fleet indexing is disabled you get an empty dashboard, which is the usual created it but see no devices mystery.”
Q1226: How do you use IoT Device Tester?
Section titled “Q1226: How do you use IoT Device Tester?”What it is: AWS IoT Device Tester is a local command-line tool that runs qualification test suites against your device software to certify it for AWS programs.
Why it is used: Proves a device build meets AWS interoperability requirements before listing it in the Partner Device Catalog.
# Run qualification test./iddt qualification test --framework-details --aws-region us-east-1Interview talking point: “IDT runs on your own machine or CI, not as a hosted service, and configuration lives in a config.json with the device pool and AWS credentials rather than flags like —framework-details. The qualification you earn depends on the suite you run, so match the suite to your program.”
Q1227: How do you implement Amazon Chime SDK?
Section titled “Q1227: How do you implement Amazon Chime SDK?”What it is: The Amazon Chime SDK embeds real-time audio, video, and messaging in your app: create_meeting provisions a meeting, and create_attendee issues join tokens for each participant.
Why it is used: Adds meetings and chat to a product without building WebRTC or telephony infrastructure yourself.
# Create meetingchime.create_meeting( ClientRequestToken='unique-token', MediaRegion='us-east-1')Interview talking point: “ClientRequestToken makes creation idempotent, so retrying with the same token returns the same meeting instead of spawning duplicates, and the client must persist it. Nobody joins without an attendee JoinToken, MediaRegion should sit near your users for latency, and billing is per attendee-minute of media.”
Q1228: How do you use Chime Bot?
Section titled “Q1228: How do you use Chime Bot?”What it is: Chime bots are integration points that post messages into Chime channels: create_bot under a Chime account returns a bot with an ID, ARN, and webhook that scripts can call.
Why it is used: Sends deploy and alert messages into a Chime channel from scripts, the internal-notifications pattern for Chime shops.
# Create bot for channelaws chime create-bot \ --account-id account-id \ --display-name my-bot \ --domain domainInterview talking point: “The webhook itself carries auth, so posting does not need IAM; IAM only governs managing the bot, and missing chime rights gives Unauthorized: The caller is not authorized to operate Chime APIs. Bots belong to a Chime account created via list-accounts, and most teams now prefer AWS Chatbot for SNS to Chime notifications.”
Q1229: How do you implement Connect Instance?
Section titled “Q1229: How do you implement Connect Instance?”What it is: Amazon Connect is a cloud contact center: create-instance provisions your tenant with identity settings and call enablement, after which you claim phone numbers and build flows.
Why it is used: Runs an inbound and outbound call center on AWS with IVR, agent desktop, and recording, no telephony hardware.
# Create instanceaws connect create-instance \ --instance-name my-instance \ --instance-type ContactCenterInterview talking point: “Identity management type is chosen at creation and painful to change later: CONNECT_MANAGED for speed, SAML for your IdP, or EXISTING_DIRECTORY for AD. Poll describe-instance until ACTIVE before claiming numbers, since querying a not-yet-active instance returns ResourceNotFoundException.”
Q1230: How do you use Connect Flows?
Section titled “Q1230: How do you use Connect Flows?”What it is: Connect contact flows are the IVR logic of an instance: create-contact-flow uploads a JSON definition of blocks like play prompt, get digits, invoke Lambda, and transfer to queue.
Why it is used: Builds IVR menus, routing, and integrations visually, programming the call experience without writing code.
# Create contact flowaws connect create-contact-flow \ --instance-id instance-id \ --name "Inbound Flow" \ --type CONTACT_FLOW \ --content file://flow.jsonInterview talking point: “The type flag matters because a flow built as CUSTOMER_HOLD or AGENT_WHISPER cannot be used as the main CONTACT_FLOW, so a wrong type simply will not attach to a number. Content is required JSON, easiest passed as file://flow.json, and update-contact-flow-content edits a flow in place.”
Q1231: How do implement WorkMail Organization?
Section titled “Q1231: How do implement WorkMail Organization?”What it is: WorkMail is managed business email on your domain: create-organization makes the tenant with a unique alias, then you register a mail domain and provision users and mailboxes.
Why it is used: Gives an organization @company.com email and calendar without running mail servers, with Exchange-compatible client access.
# Create organizationaws workmail create-organization \ --alias my-orgInterview talking point: “The org is regional and its alias must be globally unique, so a collision raises EntityAlreadyExists. Domain verification stalls on missing MX, SPF, and DKIM records, and the organization cannot be deleted while mailboxes or domains remain. WorkMail handles mailboxes while SES handles bulk sending.”
Q1232: How do you use Pinpoint Campaigns?
Section titled “Q1232: How do you use Pinpoint Campaigns?”What it is: Pinpoint campaigns send targeted push, SMS, or email to segments of app users: create_segment defines the audience and create_campaign schedules messages and treatment variations.
Why it is used: Runs engagement marketing to behavior-based audiences, the analytics-driven user messaging answer for product teams.
# Create segmentpinpoint.create_segment( ApplicationId='app-id', SegmentRequest={'Name': 'my-segment'})
# Create campaignpinpoint.create_campaign( ApplicationId='app-id', WriteTreatmentRequest={'Name': 'my-campaign', 'Treatment': [{'TreatmentName': 'v1'}]})Interview talking point: “A campaign needs a Schedule with frequency and start time or it never fires, plus SegmentId and per-channel MessageConfiguration like APNSMessage, SMSMessage, or EmailMessage. Campaigns start as drafts, treatments give you A/B splits, and SMS costs per message plus origination, so review the estimate before launch.”
Q1233: How do you implement SES Templates?
Section titled “Q1233: How do you implement SES Templates?”What it is: SES templates store reusable subject, text, and HTML bodies with double-brace placeholders, filled per recipient and sent through SendTemplatedEmail or send_bulk_templated_email.
Why it is used: Sends branded email with per-person data without building bodies in code, keeping copy consistent across sends.
# Create templateses.create_template( Template={ 'TemplateName': 'my-template', 'SubjectPart': 'Welcome {{name}}', 'TextPart': 'Hello {{name}}, welcome!', 'HtmlPart': '<h1>Hello {{name}}!</h1>' })Interview talking point: “TemplateData is a JSON string where extra keys are ignored but a placeholder missing from the data causes a rendering failure, so keep them exactly matched. SES is regional, templates do not version, and SES does not escape values, which is an HTML injection risk with user data. In sandbox you can only send to verified addresses.”
Q1234: How do you use SNS Platform Applications?
Section titled “Q1234: How do you use SNS Platform Applications?”What it is: SNS platform applications register mobile push channels with APNS or FCM, and create_platform_endpoint registers each device token so publish can target it.
Why it is used: Sends push notifications to a mobile app without coding APNS and FCM clients, handling tokens centrally.
# Create platform applicationsns.create_platform_application( Name='my-app', Platform='APNS', PlatformCredential='certificate')Interview talking point: “APNS uses a certificate with PlatformPrincipal carrying the private key while GCM uses an API key as PlatformCredential, and MessageStructure json lets one publish carry per-platform payloads with a default fallback. When APNS or FCM reports a bad token, SNS marks the endpoint Disabled, so the app must re-register it.”
Q1235: How do you implement SQS FIFO Queues?
Section titled “Q1235: How do you implement SQS FIFO Queues?”What it is: SQS FIFO queues guarantee exactly-once, in-order delivery within message groups, created with a name ending in .fifo and optional content-based deduplication.
Why it is used: Handles strictly ordered, duplicate-free processing like orders and financial events where standard SQS is unacceptable.
# Create FIFO queuesqs.create_queue( QueueName='orders.fifo', Attributes={ 'FifoQueue': 'true', 'ContentBasedDeduplication': 'true' })Interview talking point: “A queue with FifoQueue true but no .fifo suffix is rejected outright, and duplicates inside the five-minute dedup window are dropped silently. Ordering is per MessageGroupId, so parallelize by splitting work across groups: base throughput is 300 messages per second, 3000 batched, with higher throughput an opt-in setting.”
Q1236: How do you use EventBridge Schemas?
Section titled “Q1236: How do you use EventBridge Schemas?”What it is: EventBridge Schemas is a registry for event shapes: schema discovery infers JSON schemas from bus traffic and the service generates typed SDK bindings for consumers.
Why it is used: Standardizes event payloads across teams with versioned schemas and generated client code, improving event-driven developer experience.
# Discover schemaaws eventschemas discover-schemas \ --registry-name my-registry \ --event-source kinesisInterview talking point: “There is no discover-schemas verb; the real calls are create-registry, search-schemas, get-discovered-schema, describe-schema, and put-code-binding to generate Python, TypeScript, or Java code. Schema versions are immutable so changes create a new version, and schemas document and generate code rather than validate events at runtime.”
Q1237: How do you implement Step Functions Distributed Map?
Section titled “Q1237: How do you implement Step Functions Distributed Map?”What it is: The Distributed Map fans out a large input array so each item runs as its own execution in parallel, reading items from S3 with MaxConcurrency up to 10,000.
Why it is used: Processes millions of records in parallel where Inline Map’s 40-concurrency and 256KB payload limits fall short.
{ "Map": { "Type": "Map", "ItemProcessor": { "Processor": { "Type": "Task", "Resource": "arn:aws:states:::lambda:invoke", "Parameters": { "FunctionName": "my-function", "Payload": {"item": "$$"} } } }, "MaxConcurrency": 50, "End": true }}Interview talking point: “A Map with ItemReader or concurrency beyond 40 runs Distributed, billing each item as a separate execution, so reserve it for big fan-outs. Monitor through list-map-runs and describe-map-run, and ToleratedFailurePercentage lets a share of items fail while the run still completes.”
Q1238: How do you use Glue DataBrew?
Section titled “Q1238: How do you use Glue DataBrew?”What it is: Glue DataBrew is visual data preparation: create-dataset registers source data, create-project binds it to a recipe of no-code transform steps, and create-job runs the recipe on a schedule.
Why it is used: Lets analysts clean and shape data without writing Spark, the self-service ETL layer on Glue.
# Create datasetaws databrew create-dataset \ --name my-dataset \ --source S3 \ --input file://config.jsonInterview talking point: “Projects need an IAM role to read S3, and a missing or under-scoped role is why a project shows no data. DataBrew jobs execute through Glue sessions, so billing shares the Glue family, and it handles batch datasets only, not streaming.”
Q1239: How do implement Lake Formation Tags?
Section titled “Q1239: How do implement Lake Formation Tags?”What it is: Lake Formation LF-tags are attribute-based access control: create-lf-tag defines keys and values, tags get attached to databases, tables, or columns, and grants are issued by tag.
Why it is used: Scales permissions by granting on tag values instead of listing tables, so newly tagged resources inherit access.
# Create LF-tagaws lakeformation create-lf-tag \ --catalog-id 123456789012 \ --tag-key department
# Grant permissionsaws lakeformation grant-permissions \ --principal DataLakePrincipalIdentifier=user@example.com \ --permissions SELECT \ --resource '{"LFTags":[{"TagKey":"department","TagValues":["engineering"]}]}'Interview talking point: “A tag-based grant covers nothing until the resource itself is tagged with add-lf-tags-to-resource, which is why a grant can exist while the table stays invisible. Column-level tags let you hide fields like a salary column, and LF-tags are evaluated inside Lake Formation, not as IAM principal tags.”
Q1240: How do you use QuickSight Embedding?
Section titled “Q1240: How do you use QuickSight Embedding?”What it is: QuickSight embedding returns a signed, short-lived dashboard URL via get-dashboard-embed-url, with IdentityType choosing IAM, QuickSight, or anonymous sessions for an iframe in your app.
Why it is used: Puts live dashboards inside your product under your own auth, making analytics a feature without separate logins.
# Generate embed URLresponse = quicksight.get-dashboard-embed-url( AwsAccountId='123456789012', DashboardId='dashboard-id', IdentityType='IAM')Interview talking point: “The dashboard must be shared with the calling identity or generation fails with AccessDenied or ResourceNotFound, and anonymous embeds additionally require the embed domain allowlist. URLs expire by SessionLifetimeInMinutes, so the app must refresh before expiry or the iframe returns a token expired error.”
Q1241: How do you implement Redshift WLM?
Section titled “Q1241: How do you implement Redshift WLM?”What it is: Redshift Workload Management splits query traffic into queues with concurrency slots and memory percentages so short BI queries and heavy ETL do not compete.
Why it is used: Protects interactive dashboards from nightly batch jobs by isolating workloads into queues with fixed concurrency.
# Configure WLMaws rds create-db-cluster \ --db-cluster-identifier my-cluster \ --manage-master-user-passwordInterview talking point: “The doc’s create-db-cluster with manage-master-user-password is an Aurora command, not Redshift; WLM is configured through wlm_json_configuration in a parameter group or modify-cluster. Each queue’s concurrency slots partition cluster memory, queries queue when slots are busy, and STL_WLM_QUERY shows queued versus running time.”
Q1242: How do you use OpenSearch ML Commons?
Section titled “Q1242: How do you use OpenSearch ML Commons?”What it is: ML Commons is an OpenSearch plugin that runs models inside the cluster for embeddings, k-NN vector search, and anomaly detection, while Serverless offers managed vector collections.
Why it is used: Adds semantic vector search to OpenSearch instead of adopting an external vector database, the semantic search answer.
# Create modelaws opensearchserverless create-collection \ --name ml-collectionInterview talking point: “ML Commons lives on provisioned clusters through the _plugins/_ml APIs, whereas Serverless collections use create-collection with type VECTORSEARCH. Serverless creation requires encryption, network, and data-access policies attached or it fails validation, and idle collections still bill minimum OCUs.”
Q1243: How do implement EMR Serverless?
Section titled “Q1243: How do implement EMR Serverless?”What it is: EMR Serverless runs Spark, Hive, Trino, and Flink jobs without clusters: create-application defines the runtime and release label, and start-job-run submits work that autoscales.
Why it is used: Runs occasional or elastic Spark analytics with zero cluster to babysit, the serverless take on EMR.
# Create applicationaws emr-serverless create-application \ --name my-app \ --type SPARK \ --release-label emr-7.0Interview talking point: “The service prefix is emr-serverless, and an invalid release label like a malformed emr-7.0 fails validation at create. Billing is per vCPU and memory per job-run second with no idle cluster cost, while capacity limits are a JSON workerConfiguration, and jobs needing private resources must run with network configuration inside your VPC.”
Q1244: How do you use EMR on EKS?
Section titled “Q1244: How do you use EMR on EKS?”What it is: EMR on EKS registers an EKS cluster as a virtual cluster and runs Spark jobs as Kubernetes pods scheduled by your own cluster capacity.
Why it is used: Runs Spark on the Kubernetes infrastructure you already operate, containerizing EMR for an existing EKS platform.
# Register EKS clusteraws emr-containers update-managed-endpoint \ --endpoint-name my-endpointInterview talking point: “The real flow is create-virtual-cluster binding an EKS namespace, then start-job-run with an execution role; update-managed-endpoint is a real but different API for interactive sessions, not the batch path. A job stuck Pending is a Kubernetes scheduling and capacity problem, not EMR.”
Q1245: How do you implement MSK Connect?
Section titled “Q1245: How do you implement MSK Connect?”What it is: MSK Connect is managed Kafka Connect: create-connector provisions workers that run source and sink connectors like Debezium CDC or S3 sinks against your MSK cluster.
Why it is used: Moves data between Kafka and other systems with managed workers, avoiding self-hosted Connect containers.
# Create connectoraws kafkaconnect create-connector \ --connector-name my-connector \ --connector-configuration file://config.jsonInterview talking point: “create-connector also needs the Kafka cluster ARN, capacity, a worker configuration, and at least one plugin ZIP from create-custom-plugin, otherwise it fails with At least one plugin is required. Enable CloudWatch worker logs before debugging a dead connector, and upgrading a connector means uploading a new plugin version, since update-connector cannot change plugins.”
Q1246: How do you use Managed Kafka?
Section titled “Q1246: How do you use Managed Kafka?”What it is: Amazon MSK runs managed Kafka clusters: create-cluster provisions broker node groups with instance type, client subnets, and broker count, while standard Kafka clients produce and consume.
Why it is used: Runs production Kafka without operating brokers, with IAM auth, VPC networking, and the full Kafka ecosystem attached.
# Create clusteraws kafka create-cluster \ --cluster-name my-cluster \ --broker-node-group-info '{ "InstanceType": "kafka.m5.large", "ClientSubnets":["subnet-1","subnet-2"] }'Interview talking point: “create-cluster requires —kafka-version, and brokers get ENIs in your ClientSubnets, so clients outside the VPC need peering or transit gateway. You never SSH to brokers; access is through Kafka APIs, ACLs, and IAM or SASL/SCRAM authentication, with storage expandable through update-broker-storage.”
Q1247: How do implement EventBridge Pipes Kinesis?
Section titled “Q1247: How do implement EventBridge Pipes Kinesis?”What it is: EventBridge Pipes connects one source to one target with built-in filtering, enrichment, and transformation, reading from Kinesis, SQS, Kafka, or DynamoDB streams with no glue code.
Why it is used: Replaces Lambda poller and forwarder code with declarative point-to-point data flow, unlike a bus’s many-to-many routing.
# Create pipe from Kinesis to Lambdaaws eventsv2 create-pipe \ --name my-pipe \ --source kinesis \ --target lambdaInterview talking point: “Source and target must be full ARNs, not bare names like kinesis, and —role-arn is required for the pipe to read and write. Pipes are one source to one target, so use a bus when you need many producers broadcasting to many consumers.”
Q1248: How do you use App Runner Service?
Section titled “Q1248: How do you use App Runner Service?”What it is: App Runner is a managed container service: create-service takes a container image or source repo, builds if needed, deploys with autoscaling and TLS, and returns a public HTTPS URL.
Why it is used: Runs a simple web app or API from a container without ECS, Fargate, or Kubernetes decisions.
# Create serviceaws apprunner create-service \ --service-name my-service \ --source-configuration '{"ImageRepository":{"RepositoryUrl":"image"}}'Interview talking point: “ImageRepositoryType must be ECR or ECR_PUBLIC since Docker Hub images are not supported, and a failing health check keeps the service stuck in OPERATION_IN_PROGRESS instead of ACTIVE. Egress is public by default, so reaching a private VPC resource like RDS needs a VPC connector.”
Q1249: How do implement EC2 Image Builder?
Section titled “Q1249: How do implement EC2 Image Builder?”What it is: EC2 Image Builder automates AMIs: an image recipe combines a parent image with component documents, and a pipeline runs build, test, and distribution on schedule.
Why it is used: Produces versioned golden AMIs with patches, agents, and hardening baked in, the AMIs as code answer.
# Create image recipeaws imagebuilder create-image-recipe \ --name my-recipe \ --parent-image "arn:aws:imagebuilder:aws:image/amazon-linux-2-x86/2023.03.17"Interview talking point: “A recipe alone does nothing: it must be paired with an infrastructure configuration carrying instance types and an IAM role, plus a distribution configuration, before create-image-pipeline ties them together. Builds launch instances in your account so they cost money, and cross-account sharing happens through AMI launch permissions in the distribution config.”
Q1250: How do you use Systems Manager Quick Setup?
Section titled “Q1250: How do you use Systems Manager Quick Setup?”What it is: Systems Manager Quick Setup is a guided flow that deploys standard SSM configurations like host management, inventory, and patch policies across instances or organizational units.
Why it is used: Onboards a fleet to the SSM baseline in minutes instead of building several pipelines by hand.
# Create Quick Setup configurationaws ssm create-ops-item \ --title "Configuration Review"Interview talking point: “create-ops-item belongs to OpsCenter, not Quick Setup, so the doc’s command is the wrong service. Quick Setup is console-first and its work shows up as SSM associations prefixed QuickSetup-, which you can replicate with create-association, put-inventory, and create-patch-baseline targeting tags or OUs.”
Additional Interview Questions 1251-1500
Section titled “Additional Interview Questions 1251-1500”Q1251: How do you implement VPC Lattice Service?
Section titled “Q1251: How do you implement VPC Lattice Service?”What it is: VPC Lattice services are app-layer mesh endpoints: a service gets a DNS name, target groups hold the compute (EC2, Lambda, IP), and listeners route traffic to registered targets.
Why it is used: To expose an internal app as a named, authenticated service across VPCs — registry, load balancing, and auth combined.
# Create serviceaws vpc-lattice create-service \ --service-name my-service
# Register targetaws vpc-lattice register-targets \ --service-identifier service-id \ --targets '[{"Id":"i-123","Port":8080}]'Interview talking point: “Targets register to the target group, not the service: register-targets requires —target-group-identifier, and passing —service-identifier fails with ValidationException. Also, auth defaults to NONE (open within the network) until you set an IAM auth policy.”
Q1252: How do you use Verified Access Groups?
Section titled “Q1252: How do you use Verified Access Groups?”What it is: Verified Access groups bundle applications with a shared trust policy; users are admitted only when their identity, device posture, and network context satisfy that policy.
Why it is used: To gate a set of internal apps uniformly with one access-policy boundary that endpoints attach to.
# Create Verified Access groupaws ec2 create-verified-access-group \ --description "Corporate access"Interview talking point: “A group belongs to a Verified Access instance — —verified-access-instance-id is required, so create the instance first. Admission is decided per request by the policy document (context.authenticated, principal.group, device status), and the group is the enforcement unit.”
Q1253: How do you implement Verified Access Endpoints?
Section titled “Q1253: How do you implement Verified Access Endpoints?”What it is: A Verified Access endpoint fronts one application: it attaches to a group, targets a VPC, and carries a domain plus ACM certificate so users reach the app without a VPN.
Why it is used: To put a single internal app behind zero-trust login and policy without requiring a VPN.
# Create endpointaws ec2 create-verified-access-endpoint \ --verified-access-group-id group-id \ --attachment-type vpc \ --domain domain-name \ --certificate-arn cert-arnInterview talking point: “The endpoint inherits the group’s policy — no separate policy on it — and you CNAME your app domain to the generated EndpointDomain. A certificate that does not cover the domain fails at associate, and the app security group should only allow the VA endpoint’s security groups.”
Q1254: How do you use IPAM Pools?
Section titled “Q1254: How do you use IPAM Pools?”What it is: IPAM pools are hierarchical CIDR containers inside an IPAM scope. create-ipam-pool makes a top-level or child pool, and VPCs draw address space from it.
Why it is used: To organize IP space into logical pools so VPC CIDRs auto-allocate without collisions and utilization is visible per pool.
# Create IPAM poolaws ec2 create-ipam-pool \ --ipam-scope-id scope-id \ --address-family ipv4 \ --allocation-default-netmask-length 24Interview talking point: “A pool with no allocated CIDR cannot hand out space — run allocate-ipam-pool-cidr first, or VPC creation fails. Child pools inherit parent space with min/max netmask guardrails, and you cannot delete a pool that still has allocations (DependencyViolationException).”
Q1255: How do you implement IPAM Allocation?
Section titled “Q1255: How do you implement IPAM Allocation?”What it is: IPAM allocation carves CIDR blocks into a pool: allocate-ipam-pool-cidr takes an exact —cidr or a —netmask-length, returning an allocation that VPCs then consume.
Why it is used: To pre-allocate address blocks per region or business unit, controlling exactly how much space each part of the org consumes.
# Allocate IP poolaws ec2 allocate-ipam-pool-cidr \ --ipam-pool-id pool-id \ --netmask-length 26Interview talking point: “Allocations must fit the pool’s available space, or you get a ValidationException for insufficient space. release-ipam-pool-allocation refuses to free an allocation still in use by a VPC, and IPAM prevents overlapping allocations within a pool.”
Q1256: How do you use VPC CIDR Resolver?
Section titled “Q1256: How do you use VPC CIDR Resolver?”What it is: “VPC CIDR Resolver” is this doc’s name for IPAM’s planning capability: resource discovery shows which CIDRs exist, pools allocate free space, and conflicts surface before launch.
Why it is used: To avoid CIDR collisions and manage multi-VPC IP space centrally — find the free /24 and what is taken.
# Enable VPC IP Address Manageraws ec2 enable-vpc-ip-address-manager \ --region us-east-1Interview talking point: “There is no enable-vpc-ip-address-manager API — IPAM is enabled per IPAM through —operating-regions on create-ipam, and “CIDR resolver” is a capability, not a service verb. IPAM also does not validate already-overlapping VPCs; it is a planning and monitoring tool.”
Q1257: How do you implement Network Access Analyzer?
Section titled “Q1257: How do you implement Network Access Analyzer?”What it is: Network Access Analyzer audits configuration for unintended reachability: you declare an access scope of source and destination categories, then the analysis reports any paths that exist.
Why it is used: To proactively find “can my internal subnet reach the internet” misconfigurations before an incident, not after.
# Start analysisaws network-insights-analyzer start-network-insights-access-scope-analysis \ --network-insights-access-scope-id scope-idInterview talking point: “It is configuration-only, so host firewall drops are invisible — same caveat as Reachability Analyzer. Use Reachability Analyzer for on-demand can X reach Y triage and Network Access Analyzer for continuous scope-based posture audits; analyses bill per run.”
Q1258: How do you use Internet Monitor Health Events?
Section titled “Q1258: How do you use Internet Monitor Health Events?”What it is: Internet Monitor health events are auto-detected degradations for a city or network against your monitored traffic; get-health-event returns the affected scope, timing, and status.
Why it is used: To know when and where your internet path degraded — the answer for why the app is slow.
# Get health eventsaws internetmonitor get-health-event \ --monitor-name my-monitor \ --event-id event-idInterview talking point: “Health events fire only for traffic the monitor actually sees, so a low —traffic-percentage-to-monitor can mean no events rather than no problem. An outage in a city you never serve never fires; the event tells you which city and what percent of traffic to reroute.”
Q1259: How do you implement CloudFront Continuous Deployment?
Section titled “Q1259: How do you implement CloudFront Continuous Deployment?”What it is: CloudFront continuous deployment runs a staging distribution alongside the primary and shifts a traffic percentage to it via a continuous deployment policy, steered by weight or header.
Why it is used: To test distribution changes against live traffic before promoting, with a fast manual rollback.
# Create continuous deployment policyaws cloudfront create-distribution \ --origin-groups '{ "Quantity": 1, "Items": [{ "Id": "primary-group", "FailoverCriteria": {"StatusCodes": {"Quantity": 2, "Items": [503]}}, "Members": {"Quantity": 2} }] }'Interview talking point: “The doc’s create-distribution —origin-groups JSON is origin failover, a different feature; continuous deployment is create-continuous-deployment-policy attached to the primary. Rollback is manual — flip the policy’s Enabled to false or promote the staging config; it does not auto-rollback on metrics.”
Q1260: How do you use Lambda SnapStart?
Section titled “Q1260: How do you use Lambda SnapStart?”What it is: Lambda SnapStart captures a snapshot of a function’s initialized state on publish, then restores it for cold starts on published versions instead of re-running init.
Why it is used: To cut cold-start latency for init-heavy runtimes like Java and Python — the fix for a slow Java Lambda.
# Enable SnapStartaws lambda update-function-configuration \ --function-name my-function \ --snap-start ApplyOn=PublishedVersionsInterview talking point: “SnapStart applies only to published versions, not $LATEST; the CLI flag is —snap-start ApplyOn=PublishedVersions. Init-opened resources (DB pools, keep-alives) come back stale after restore, so register a restore hook to re-create connections in the restore phase.”
Q1261: How do implement Lambda Event Filtering?
Section titled “Q1261: How do implement Lambda Event Filtering?”What it is: Lambda event filtering discards messages that do not match a pattern before invocation, using EventBridge-style pattern JSON on the event source mapping.
Why it is used: To cut invocations and cost on busy queues by only running the function on events it cares about.
# Create event source mapping with filteraws lambda create-event-source-mapping \ --function-name my-function \ --event-source-arn arn:aws:sqs:queue \ --filter-criteria '{"Filters":[{"Pattern":"{\"body\":{\"action\":[\"create\"]}}"}]}'Interview talking point: “Filtered messages are gone from the mapping: SQS messages failing the filter are deleted from the queue, not sent to a DLQ. Multiple filters are OR, keys within one pattern are AND, and patterns run before batching so batches contain only matching records.”
Q1262: How do you use Lambda Versioning Aliases?
Section titled “Q1262: How do you use Lambda Versioning Aliases?”What it is: Lambda versions are immutable snapshots created by publish-version; an alias is a mutable pointer to a version with weighted routing, so callers keep one stable ARN.
Why it is used: To deploy safely — callers keep the alias while you shift traffic to a new version and roll back instantly.
# Publish versionaws lambda publish-version --function-name my-function
# Create aliasaws lambda create-alias \ --function-name my-function \ --name production \ --function-version 1 \ --routing-config '{"AdditionalVersionWeights":{"2":0.1}}'Interview talking point: “Routing weights may include only one additional version and must sum to at most 1 (InvalidParameterValueException otherwise), and weights affect only new invocations — warm instances stay on the old version. Never delete a version an alias points at, and re-publish after env var changes.”
Q1263: How do you implement S3 Lifecycle Expiration?
Section titled “Q1263: How do you implement S3 Lifecycle Expiration?”What it is: S3 lifecycle expiration deletes objects automatically after a set number of days or at a date, by prefix or tag filter, including noncurrent versions.
Why it is used: To stop paying for dead data — delete logs older than 365 days — without scripts.
# Configure lifecycle ruleaws s3api put-bucket-lifecycle-configuration \ --bucket my-bucket \ --lifecycle-configuration '{ "Rules": [{ "ID": "expiration", "Status": "Enabled", "ExpirationInDays": 365 }] }'Interview talking point: “A rule with no filter applies to every object, so missing prefixes are how whole buckets vanish. Expiration applies to current versions while NoncurrentVersionExpiration handles old ones, AbortIncompleteMultipartUpload cleans stale uploads, and rules evaluate about once a day with Status Disabled silently doing nothing.”
Q1264: How do you use S3 Object Ownership?
Section titled “Q1264: How do you use S3 Object Ownership?”What it is: S3 object ownership controls who owns uploaded objects; BucketOwnerEnforced, the default for new buckets since 2023, makes the bucket owner own everything and disables ACLs.
Why it is used: To fix the cross-account problem where the writer account owns objects the bucket owner cannot delete or transition.
# Set object ownershipaws s3api put-object-ownership \ --bucket my-bucket \ --object-ownership BucketOwnerPreferredInterview talking point: “The doc’s put-object-ownership is not an S3 API — the real verb is put-bucket-ownership-controls with a Rules list. Enforcement applies per upload, so existing writer-owned objects are not re-owned; you must copy them, and BucketOwnerEnforced buckets reject ACL calls.”
Q1265: How do implement S3 Access Point Policy?
Section titled “Q1265: How do implement S3 Access Point Policy?”What it is: An access point policy is the resource policy attached to an S3 access point, whose Resource is the access point ARN scoping what that entry point allows.
Why it is used: To give each team a scoped entry point to the bucket without editing the shared bucket policy.
# Set access point policyaws s3control put-access-point-policy \ --account-id 123456789012 \ --name my-ap \ --policy '{"Version":"2012-10-17","Statement":[{"Effect":"Allow","Principal":"*","Action":"s3:GetObject","Resource":"arn:aws:s3:accesspoint:my-ap/object/*"}]}'Interview talking point: “The ARN must include region, account, and the object/* suffix — the doc’s arn:aws:s3:accesspoint:my-ap/object/* is malformed and fails policy parsing. Access point policy, bucket policy, and IAM must all allow; s3control also requires —account-id matching the owning account.”
Q1266: How do you use EKS Pod Identity Agent?
Section titled “Q1266: How do you use EKS Pod Identity Agent?”What it is: The EKS Pod Identity agent is a daemonset add-on that vends short-lived AWS credentials to pods, paired with create-pod-identity-association binding a role to a service account.
Why it is used: To give pods AWS access without the OIDC provider setup IRSA requires — the modern, simpler alternative.
# Deploy EKS Pod Identity Agentkubectl apply -f https://raw.githubusercontent.com/aws/eks-pod-identity-webhook/main/deploy.yamlInterview talking point: “The doc’s raw GitHub kubectl apply of the eks-pod-identity-webhook is the older experimental path; the supported install is the eks-pod-identity-agent add-on. Unlike IRSA, Pod Identity needs no OIDC provider or web-identity token file — the agent injects credential env vars instead.”
Q1267: How do implement EKS Cluster Encryption?
Section titled “Q1267: How do implement EKS Cluster Encryption?”What it is: EKS cluster encryption applies KMS envelope encryption to Kubernetes secrets at rest in etcd, configured at create time or with associate-encryption-config.
Why it is used: To meet compliance requiring secrets encrypted at rest — the standard EKS security baseline for etcd.
# Enable encryptionaws eks create-cluster \ --name my-cluster \ --encryption-config '[{"Provider":{"KeyArn":"arn:aws:kms:key/123"},"Resources":["secrets"]}'Interview talking point: “Resources currently accepts only “secrets” — configmaps are not covered — and the KeyArn must be a same-region KMS key the cluster role can use. Enabling on existing clusters needs associate-encryption-config; verify with describe-cluster —query cluster.encryptionConfig.”
Q1268: How do you use EKS Windows Support?
Section titled “Q1268: How do you use EKS Windows Support?”What it is: EKS Windows support adds a Windows node group via a Windows EKS-Optimized AMI type so Windows containers run alongside Linux nodes in one cluster.
Why it is used: To run Windows-only containers like IIS on EKS without re-platforming, while the control plane stays standard.
# Add Windows node groupaws eks create-nodegroup \ --cluster-name my-cluster \ --nodegroup-name windows \ --ami-type Windows_Server-2022-English-Full-EKS_OptimizedInterview talking point: “A node group cannot mix OSes, and a Linux pod scheduled to a Windows node will not start, so use node selectors or runtime classes. Windows EKS networking is IPv4-only and Windows AMIs are heavier, so budget extra disk. Wrong ami-type for the OS fails validation.”
Q1269: How do implement ECS Task Scale-In Protection?
Section titled “Q1269: How do implement ECS Task Scale-In Protection?”What it is: ECS task scale-in protection lets a task ask the service not to terminate it during managed scale-in, time-boxed via update-task-protection.
Why it is used: To let long-running tasks finish jobs or drain connections before autoscaling removes them.
# Enable scale-in protectionaws ecs update-service \ --cluster my-cluster \ --service my-service \ --enable-execute-commandInterview talking point: “The doc’s update-service —enable-execute-command is ECS Exec, a different feature; protection is update-task-protection with —expires-in-minutes capped at 120 per call. It shields only autoscaling scale-in — deployments and stop-task still terminate — and contrasts with capacity-provider instance termination protection.”
Q1270: How do you use ECS Service Discovery Integration?
Section titled “Q1270: How do you use ECS Service Discovery Integration?”What it is: ECS Service Discovery pairs Cloud Map with services configured with —service-registries, so each task’s DNS record is registered and removed automatically as tasks scale.
Why it is used: To give ECS services stable per-task DNS names for inter-service calls without a load balancer in front.
# Create private namespaceaws servicediscovery create-private-dns-namespace \ --name localInterview talking point: “create-private-dns-namespace requires —vpc, which the doc omits, so the bare call fails ValidationException. Use MULTIVALUE routing for per-task A records with client-side load balancing, typically with awsvpc network mode, and note Service Connect is the newer alternative to classic Cloud Map DNS.”
Q1271: How do you implement RDS Optimized Reads?
Section titled “Q1271: How do you implement RDS Optimized Reads?”What it is: RDS Optimized Reads is a class-selected read-path improvement on NVMe-equipped instances like db.r6id and db.r5b, lowering read latency with no configuration flag.
Why it is used: To get faster reads on read-heavy workloads by migrating to the right instance family.
# Use r6id instancesaws rds create-db-instance \ --db-instance-identifier my-db \ --db-instance-class db.r6id.largeInterview talking point: “There is no CLI flag to enable it — you choose the class and the behavior is on, so you migrate rather than enable. Data still lives on EBS; local NVMe is a read cache, not the store, and a class change via modify-db-instance causes a brief interruption.”
Q1272: How do you use RDS Blue/Green Deployments?
Section titled “Q1272: How do you use RDS Blue/Green Deployments?”What it is: RDS Blue/Green Deployments clone your database into a green environment, where you apply upgrades or schema changes, then switchover flips traffic in a short cutover.
Why it is used: To make risky database changes testable on a staging clone with nearly instant cutover and easy rollback.
# Create blue/green deploymentaws rds create-blue-green-deployment \ --source-db-instance-identifier my-db \ --blue-green-deployment-name my-deployment \ --engine-version 15.4Interview talking point: “Green is built from the source with continuous replication, so large databases take time to clone, and switchover is seconds to minutes, not zero. You cannot modify the source while the green exists, and support spans MySQL, MariaDB, Postgres, and Aurora.”
Q1273: How do implement Aurora Limitless Database?
Section titled “Q1273: How do implement Aurora Limitless Database?”What it is: Aurora Limitless Database scales Postgres writes horizontally with a router that parses SQL and distributes queries across sharded serverless writer instances.
Why it is used: For write-heavy OLTP beyond one Aurora cluster’s capacity, keeping standard Postgres SQL and drivers.
# Create Aurora Limitless DBaws rds create-db-cluster \ --db-cluster-identifier my-cluster \ --engine aurora-postgresql \ --serverlessv2-scaling-configuration '{"MinCapacity":2,"MaxCapacity":64}'Interview talking point: “Tables need a declared sharding key (aurora_distributed), and transactions spanning shards plus some SQL constructs are unsupported — design tables around the shard key. Write scale comes from adding shards, and clients point at the router endpoint rather than a normal instance endpoint.”
Q1274: How do you use DynamoDB Standard-IA Class?
Section titled “Q1274: How do you use DynamoDB Standard-IA Class?”What it is: DynamoDB table classes trade storage cost against access rate; STANDARD_INFREQUENT_ACCESS stores data for roughly half the price but charges more per read and write.
Why it is used: To cut storage bills on cold tables that are rarely read or written.
# Update table classaws dynamodb update-table \ --table-name my-table \ --table-class STANDARD_INFREQUENT_ACCESSInterview talking point: “The class change via update-table is an online metadata update with no data rewrite, and it is a pure cost lever — no feature differences. IA wins only when storage outweighs access: calculate the break-even before moving a hot table, and check the class with describe-table.”
Q1275: How do implement DynamoDB Import/Export?
Section titled “Q1275: How do implement DynamoDB Import/Export?”What it is: DynamoDB import/export moves data through S3 server-side: import-table loads CSV, DynamoDB JSON, ION, or Parquet into a new table, export-table-to-point-in-time writes the table out.
Why it is used: To move data into and out of DynamoDB without ETL, app code, or consumed read capacity.
# Import from S3aws dynamodb import-table \ --s3-bucket-source Bucket=my-bucket,Key=export \ --input-format PARQUETInterview talking point: “import-table requires —table-creation-parameters because it can only create a new table, never append to an existing one, and both jobs run asynchronously so you poll get-import or describe-export. Exports bill no RCUs and imports consume no capacity on the source.”
Q1276: How do you use ElastiCache Serverless?
Section titled “Q1276: How do you use ElastiCache Serverless?”What it is: ElastiCache Serverless runs Redis without capacity planning — create-serverless-cache provisions an auto-scaling cache with a single endpoint, bounded by min and max capacity.
Why it is used: To run a small or spiky Redis cache without picking node sizes or paying for idle nodes.
# Create serverless cacheaws elasticache create-serverless-cache \ --serverless-cache-name my-cache \ --engine redisInterview talking point: “Serverless is Redis only — not Memcached — and billing is per ECPU-second plus storage, not per node. It fits small or spiky workloads; for steady high throughput, sized node-based Redis often gives better predictable price and performance.”
Q1277: How do implement Redshift RA3 Auto Scaling?
Section titled “Q1277: How do implement Redshift RA3 Auto Scaling?”What it is: RA3 decouples compute from storage: managed S3-backed storage auto-grows while you scale query capacity by resizing node count, with concurrency scaling for bursts.
Why it is used: To scale an RA3 cluster’s compute independently of its data size, letting managed storage absorb growth.
# Create RA3 cluster with auto-scalingaws redshift create-cluster \ --cluster-type multi-node \ --node-type ra3.xlplus \ --number-of-nodes 2Interview talking point: “On RA3, resizing nodes does not reshuffle all data because storage is managed separately, and your bill grows with managed-storage gigabytes even if node count never changes. Concurrency Scaling is the query-burst mechanism, and Redshift Serverless is the full auto-scale form.”
Q1278: How do you use OpenSearch Serverless Collection?
Section titled “Q1278: How do you use OpenSearch Serverless Collection?”What it is: OpenSearch Serverless collections are serverless search or vector units created with create-collection, backed by auto-scaling OCUs with network, encryption, and data-access policies attached.
Why it is used: To run OpenSearch without cluster management — search or vector search billed per OCU.
# Create collectionaws opensearchserverless create-collection \ --name my-collection \ --type SEARCHInterview talking point: “The create call needs encryption, network, and data-access policies first — a collection without them fails validation. Collections bill even when idle because they keep minimum OCUs, access is via IAM data-access policies rather than provisioned fine-grained users, and VECTORSEARCH is the k-NN flavor.”
Q1279: How do implement EMR Serverless Jobs?
Section titled “Q1279: How do implement EMR Serverless Jobs?”What it is: EMR Serverless jobs submit Spark, Hive, or Trino work with start-job-run against an application that auto-provisions workers, runs the job, then releases capacity.
Why it is used: To run ETL jobs with no cluster to manage, paying only for the seconds of compute used.
# Submit jobaws emr-serverless start-job-run \ --application-id app-id \ --job-driver '{"sparkSubmit":{"entryPoint":"s3://code/main.py"}}'Interview talking point: “The application must exist and carry the execution role — without —execution-role-arn at create-application, jobs fail AccessDenied reading S3. Also configure monitoring logs in configuration-overrides or job logs are lost, and set an execution timeout so runs cannot hang forever.”
Q1280: How do you use Glue Interactive Sessions?
Section titled “Q1280: How do you use Glue Interactive Sessions?”What it is: Glue interactive sessions are long-lived Spark sessions driven from notebooks or IDEs: create-session returns a SessionId you reuse for run-statement calls.
Why it is used: To iterate on Glue ETL interactively, testing code statement by statement instead of launching a job per edit.
# Start sessionaws glue create-session \ --name my-session \ --command type=glueetlInterview talking point: “The doc’s —command type=glueetl is wrong: Command is a map, so pass Name=glueetl,PythonVersion=3. The session needs the Glue service role or it fails AccessDenied, data catalog flags go in —default-arguments, and sessions bill DPU-hours while open — close idle ones.”
Q1281: How do you implement SageMaker Canvas?
Section titled “Q1281: How do you implement SageMaker Canvas?”What it is: SageMaker Canvas is the no-code ML workspace in Studio, enabled per user through CanvasAppSettings on the domain, where analysts build forecasting and classification models.
Why it is used: To let business analysts build and run ML models without writing code — the citizen data scientist answer.
# Create canvas applicationaws sagemaker create-domain \ --domain-name my-domain \ --domain-settings '{"SecurityGroupIdForRStudio":"sg-123"}'Interview talking point: “The doc’s create-domain —domain-settings SecurityGroupIdForRStudio is the RStudio knob and does nothing for Canvas — the real setting is CanvasAppSettings in user settings. If Canvas is missing from the UI, the user lacks CanvasAppSettings or the region, and users need sagemaker:CreateApp plus data permissions.”
Q1282: How do you use SageMaker JumpStart?
Section titled “Q1282: How do you use SageMaker JumpStart?”What it is: SageMaker JumpStart is a hub of pre-trained models you browse, deploy to endpoints, or fine-tune, exposing a model package ARN and serving container.
Why it is used: To stand up a working pre-trained model fast without training from scratch.
# List available models# `--output-table` is not a real flag -- the CLI rejects unknown options:# Unknown options: --output-table# Output formatting is a global option (--output table) or --query:aws sagemaker list-models --region us-east-1 --output tableInterview talking point: “The doc’s aws sagemaker list-models —output-table is doubly wrong: list-models lists only your own trained models, and —output-table is not a flag — output formatting is the global —output table. Browse the catalog via Studio or list-model-packages, and note JumpStart deploys into your infrastructure while Bedrock is a managed API.”
Q1283: How do implement CodeWhisperer?
Section titled “Q1283: How do implement CodeWhisperer?”What it is: Amazon CodeWhisperer, now Amazon Q Developer, is an AI code-completion assistant delivered as an IDE extension with inline suggestions and security scanning.
Why it is used: To get inline AI code suggestions against your codebase and scan generated code for vulnerabilities.
# Configure CodeWhisperer# There is no `codewhisperer` service in the AWS CLI:# aws: error: argument command: Invalid choice, valid choices are ...# CodeWhisperer is an IDE extension (sign in with builder ID or# IAM Identity Center); Amazon Q Developer is the current product.Interview talking point: “There is no codewhisperer service in the AWS CLI — the doc’s create-profile command does not exist; configuration lives in the IDE plugin signed in with builder ID or IAM Identity Center. Say Q Developer for the current product, and roll teams out via SSO permission sets.”
Q1284: How do you use Bedrock Models?
Section titled “Q1284: How do you use Bedrock Models?”What it is: Bedrock offers foundation models like Claude, Llama, and Titan through a managed API; list-foundation-models catalogs them and bedrock-runtime invokes them per token.
Why it is used: To call frontier LLMs from your app without managing GPU infrastructure.
# List available modelsaws bedrock list-foundation-models \ --by-provider anthropicInterview talking point: “Listing lives on the bedrock control-plane client while invoking lives on bedrock-runtime — different prefixes. Model access is granted per account, so a valid key can still hit AccessDenied, and —model-id must be the exact id from list-foundation-models; —body shapes differ per provider.”
Q1285: How do implement Bedrock Agents?
Section titled “Q1285: How do implement Bedrock Agents?”What it is: Bedrock Agents binds a foundation model to instructions, action groups of Lambda or function tools, and knowledge bases so it can plan and call tools.
Why it is used: To give an LLM the ability to act across your APIs without hand-coded orchestration.
# Create agentaws bedrock-agent create-agent \ --agent-name my-agent \ --foundation-model-model-id anthropic.claude-v2Interview talking point: “The doc’s —foundation-model-model-id flag does not exist; the real flag is —foundation-model taking the model id string. Action groups need an API or function schema or the agent cannot call tools, and invoke-agent runs on the bedrock-agent-runtime client, a separate prefix from control plane.”
Q1286: How do you use Q Business?
Section titled “Q1286: How do you use Q Business?”What it is: Amazon Q Business is an enterprise chat assistant over your company data: create an application, add an index and data source connectors, then users chat with cited answers.
Why it is used: To give employees a chat interface over internal documentation with answers citing sources.
# Create applicationaws qbusiness create-application \ --name my-appInterview talking point: “An app with no index or an unsynced data source answers nothing — create-index, then create-data-source with a role, then start-data-source-sync-job. Retrieval is access-control-aware through IAM Identity Center, so users only see docs they can already read, and Q Business is distinct from Q Developer and Q Connect.”
Q1287: How do implement Supply Chain?
Section titled “Q1287: How do implement Supply Chain?”What it is: AWS Supply Chain provisions a tenant with create-instance, then ingests ERP and inventory data for demand planning, inventory visibility, and N-tier supply analysis.
Why it is used: To centralize inventory and demand planning across warehouses and suppliers instead of stitching Excel extracts.
# Create supply chain instanceaws supplychain create-instance \ --instance-name my-instanceInterview talking point: “The CLI surface is thin: create-instance, list-instances, update-instance, delete-instance manage the tenant, while data ingestion and planning modules happen through the console, connectors, and the instance’s S3 data lake. Each instance is one organization’s data domain, with an optional KMS key for BYOK, and pricing is per instance plus per feature.”
Q1288: How do you use Clean Rooms ML?
Section titled “Q1288: How do you use Clean Rooms ML?”What it is: AWS Clean Rooms lets multiple parties run governed analysis over combined data without sharing raw rows, and Clean Rooms ML adds audience modeling on the joint data.
Why it is used: To let advertisers and publishers compute campaign results on joined data without either seeing the other’s rows.
# Create collaboration with MLaws cleanrooms create-collaboration \ --name my-collab \ --members '[{"accountId":"111","capabilities":["CAN_USE_ML"]}]'Interview talking point: “The doc’s —members with capabilities and CAN_USE_ML mixes API versions; the current API uses memberAbilities like CAN_QUERY and CAN_RECEIVE_RESULTS, and ML lives in the separate cleanrooms-ml service. Queries run as protected queries with analysis rules — aggregate rules prevent row leakage — and raw data never moves centrally.”
Q1289: How do implement HealthLake FHIR Import?
Section titled “Q1289: How do implement HealthLake FHIR Import?”What it is: HealthLake stores FHIR medical data; create-fhir-import-job bulk-imports NDJSON resources from S3 into a FHIR datastore that then serves FHIR REST APIs.
Why it is used: To centralize clinical data into one queryable managed FHIR store instead of running your own server.
# Import FHIR dataaws healthlake create-fhir-import-job \ --datastore-id datastore-id \ --input-data-config S3Uri=s3://bucket/dataInterview talking point: “The datastore must already exist and be ACTIVE, and the import needs —data-access-role-arn — an IAM role with S3 read and healthlake:ImportFHIRData — or it fails. The CLI wants —input-data-config as JSON like {“S3Uri”: ”…”} rather than the doc’s bare key=value form, and jobs are async.”
Q1290: How do you use IoT TwinMaker?
Section titled “Q1290: How do you use IoT TwinMaker?”What it is: IoT TwinMaker builds digital twins: a workspace holds entities and component types bound to live data sources, plus 3D scenes rendered in your application.
Why it is used: To monitor physical assets through a live 3D replica wired to telemetry instead of custom plumbing.
# Create workspaceaws iottwinmaker create-workspace \ --workspace-id my-workspaceInterview talking point: “create-workspace also requires —workspace-role and —s3-location, which the doc omits, so the bare call fails validation. The structure is workspace to entities to components with data bindings to SiteWise or IoT Core, scenes are glTF in S3, and users view it through the TwinMaker scene viewer SDK.”
Q1291: How do implement IoT FleetWise?
Section titled “Q1291: How do implement IoT FleetWise?”What it is: IoT FleetWise collects vehicle telemetry through campaigns that define which signals to capture, from which vehicles, at what frequency, into S3 or TimeStream.
Why it is used: To sample CAN and OBD signals across a vehicle fleet for analytics without bespoke pipelines.
# Create campaignaws iotfleetwise create-campaign \ --name my-campaignInterview talking point: “create-campaign alone is not enough: you need a signal catalog, a decoder manifest mapping raw CAN bytes to signal names, a fleet or vehicle, and —signal-catalog-arn plus —target-arn. Collection schemes can be time-based or condition-based, and vehicles need the FleetWise edge agent or no data arrives.”
Q1292: How do you use Panorama?
Section titled “Q1292: How do you use Panorama?”What it is: AWS Panorama runs computer vision models at the edge on Panorama appliances, where packages are built, versioned, then deployed to devices as application instances.
Why it is used: To run vision inference at the camera site instead of sending video to the cloud.
# Create application# There is no `panorama create-application` verb.# Panorama deploys an app to a device via create-application-instance;# the app itself is packaged with create-package + register-package-version:aws panorama create-application-instance \ --name my-app-instance \ --application-package-version-arn arn:aws:panorama:region:acct:application-package/my-app/version/1.0Interview talking point: “There is no panorama create-application verb — the real flow is create-package plus a package import job, register the version, then create-application-instance referencing the package version ARN on a provisioned device. Compare with SageMaker Edge Manager for models on arbitrary hardware.”
Q1293: How do implement OpenTelemetry on AWS?
Section titled “Q1293: How do implement OpenTelemetry on AWS?”What it is: Running OpenTelemetry on AWS means deploying the ADOT collector on EKS, ECS, or EC2 so instrumented apps export traces and metrics to AWS backends.
Why it is used: To instrument once with vendor-neutral OTel SDKs and export to X-Ray, CloudWatch, or Managed Prometheus.
# Install ADOT collector# ADOT is NOT an EMR application -- EMR `--applications` accepts only# EMR apps (Name=Spark, Name=Hive, Name=Flink, ...); an unknown name# fails cluster creation with a validation error.# ADOT is a collector you install on EKS/ECS/EC2 instead (see Q1294).Interview talking point: “The doc’s aws emr create-cluster with Name=ADOT is wrong — ADOT is not an EMR application, and that flag accepts only EMR apps like Spark and Hive. Install the ADOT collector as the EKS add-on, an ECS sidecar, or on EC2, and give its role xray:PutTraceSegments or aps:RemoteWrite permissions.”
Q1294: How do you use AWS Distro for OpenTelemetry?
Section titled “Q1294: How do you use AWS Distro for OpenTelemetry?”What it is: The AWS Distro for OpenTelemetry is AWS’s supported OTel collector distribution, shipping the collector image plus AWS exporters for X-Ray, CloudWatch, and Managed Prometheus.
Why it is used: To run one standard collector that reliably exports telemetry to AWS destinations with supported configs.
# Configure ADOTdocker run -d -p 4317:4317 \ -e AWS_REGION=us-east-1 \ amazon/aws-otel-collectorInterview talking point: “The docker run in the doc works only with a mounted config — without exporters the container runs its default config and sends nothing. OTLP listens on 4317 for gRPC and 4318 for HTTP, the role needs xray:PutTraceSegments or cloudwatch:PutMetricData, and the CloudWatch agent now embeds OTel so you need not run two agents.”
Q1295: How do implement Application Signals?
Section titled “Q1295: How do implement Application Signals?”What it is: CloudWatch Application Signals tracks per-service latency, faults, and availability from auto-instrumented traces, rendering service maps and SLO dashboards in the CloudWatch console.
Why it is used: To get service-level health and SLO views without hand-building dashboards from raw metrics.
# Enable Application Signalsaws cloudwatch enable-alarm-detailsInterview talking point: “The doc’s aws cloudwatch enable-alarm-details is not a real CloudWatch API — enabling Application Signals happens in the console or the CloudWatch agent’s application_signals config. Signals also require the app to emit OTel or X-Ray traces, or the dashboard stays empty; metrics land in AWS/ApplicationSignals where put-metric-alarm targets them.”
Q1296: How do you use Service Catalog AppRegistry?
Section titled “Q1296: How do you use Service Catalog AppRegistry?”What it is: AppRegistry registers applications and their CloudFormation stacks or tag-based resources into a catalog with attribute groups for operational metadata.
Why it is used: To answer what resources make up an application and link stacks plus metadata into one record.
# Create application# `servicecatalog create-application` is not an operation (Service# Catalog works with portfolios/products):# An error occurred (InvalidAction): Could not find operation# CreateApplication for version 2016-10-01# AppRegistry uses its own service prefix:aws servicecatalog-appregistry create-application \ --name my-app --description "Checkout service"Interview talking point: “The doc’s aws servicecatalog create-application is wrong — servicecatalog has create-portfolio and create-product; AppRegistry uses its own servicecatalog-appregistry prefix. Associate stacks with associate-resource and metadata with associate-attribute-group, then consume the application view through SSM Application Manager.”
Q1297: How do implement Control Tower Organization?
Section titled “Q1297: How do implement Control Tower Organization?”What it is: Control Tower provisions a governed multi-account landing zone with a manifest: management account, Audit and Log Archive core accounts, OUs, baselines, and guardrails.
Why it is used: To stand up a policy-enforced AWS organization fast instead of hand-rolling accounts and SCPs.
# Create landing zoneaws controltower create-landing-zone \ --manifest file://manifest.jsonInterview talking point: “create-landing-zone takes a strict manifest of governed regions, security roles, and centralized logging, and malformed fields fail ValidationException. Control Tower expects a fairly clean organization — heavily customized orgs show drift on the landing zone — while account factory create-account provisions governed accounts into target OUs.”
Q1298: How do you use Audit Manager Assessments?
Section titled “Q1298: How do you use Audit Manager Assessments?”What it is: Audit Manager builds assessments from compliance frameworks like CIS or SOC 2 and auto-collects evidence from Config, CloudTrail, and other services into control sets.
Why it is used: To gather audit evidence continuously without hand-pulling screenshots from consoles for weeks.
# Create assessmentaws auditmanager create-assessment \ --name my-assessment \ --scope-compliance-framework=CISInterview talking point: “The doc’s —scope-compliance-framework flag does not exist; scope is a —scope JSON with complianceType, awsAccounts, and awsServices, and —roles is required or create fails ValidationException. Assessments reference a framework, and reports are generated with start-assessment-report-generation to an S3 destination.”
Q1299: How do implement Detective Investigations?
Section titled “Q1299: How do implement Detective Investigations?”What it is: Detective investigations start a scoped inquiry on the Detective graph, correlating GuardDuty, CloudTrail, VPC Flow, and DNS data into a timeline for the analyst.
Why it is used: To answer what happened behind a GuardDuty finding with a correlated kill-chain view.
# Create investigationaws detective create-investigation \ --graph-arn graph-arn \ --title "Security Investigation"Interview talking point: “The graph must exist and GuardDuty must be feeding it, or the investigation shows thin data. create-investigation takes —graph-arn plus optional —entity-arn for the finding ARN and scope start and end times; a wrong graph ARN fails with resource not found, and results arrive as an investigationId to poll with get-investigation.”
Q1300: How do you use Security Hub Automation Rules?
Section titled “Q1300: How do you use Security Hub Automation Rules?”What it is: Security Hub automation rules evaluate incoming findings against criteria and apply actions like updating severity or notes, or sending to a custom action target.
Why it is used: To auto-triage and remediate findings as they stream in instead of writing EventBridge plumbing.
# Create automation rule# `--name` is not a flag on create-automation-rule (real: --rule-name),# and criteria takes Comparison objects, not the console shorthand:aws securityhub create-automation-rule \ --rule-name "Auto-remediation" \ --rule-order 1 \ --description "Auto-note critical findings" \ --criteria '{"Severity":{"Value":[{"Comparison":"EQUALS","Value":"CRITICAL"}]}}' \ --actions '[{"Type":"FINDING_FIELDS_UPDATE","FindingFieldsUpdate":{"Note":{"Text":"Auto-remediated","UpdatedBy":"automation"}}}]'Interview talking point: “The doc’s —name is wrong; the real flag is —rule-name, and —rule-order (1 to 1000) is required or creation fails validation. Criteria are Comparison objects rather than the console shorthand plain value list, actions are FINDING_FIELDS_UPDATE or SEND_TO_CUSTOM_ACTION_TARGET, and rules evaluate findings as they stream in.”
Questions 1301-1500 continue with more advanced scenarios…
Section titled “Questions 1301-1500 continue with more advanced scenarios…”(Note: Due to length limits, questions 1301-1500 would follow similar patterns covering more AWS services including:
- Additional ML/AI services
- More security configurations
- Advanced DevOps practices
- More architecture patterns
- Edge computing scenarios
- Government and compliance specific services
- Partner integrations
- Industry-specific solutions )