SaveMyCert
Log in
5 of 5 free questions left today·for 10 a day
Implementation and Integration

AIP-C01 Enterprise Integration Architectures: Legacy Connectivity, Secure FM Access, Hybrid Routing and GenAI Gateways

23 min readAIP-C01 · Implementation and IntegrationUpdated

Enterprise integration architecture for generative AI is the set of patterns that connect foundation model capabilities to an organization's existing applications, identities, networks and release processes without weakening security or compliance. This lesson covers AIP-C01 Task 2.3: calling legacy and on-premises APIs from Step Functions and EventBridge, event-driven decoupling and data synchronization, adding GenAI routes and webhooks with API Gateway and Lambda, identity federation and least-privilege access to Amazon Bedrock, private routing from data centers, AWS Outposts and AWS Wavelength for residency and edge needs, CI/CD gates and rollback for GenAI components, and central GenAI gateways that enforce and measure usage per consumer.

What you’ll learn
  • Choose between a Step Functions HTTP Task, an EventBridge API destination, a Lambda function and the callback pattern to integrate GenAI workflows with legacy and on-premises APIs
  • Design event-driven and data-synchronization patterns with EventBridge buses, archives, pipes, Amazon MQ, AWS DMS, SQS FIFO message groups and optimistic locking
  • Add GenAI routes and webhook handlers to existing applications with private REST APIs, JWT authorizers, request validation, signature checks and idempotent processing
  • Federate enterprise identities with Cognito user pools, identity pools or IAM Identity Center, and control model and data access with session tags, SCPs and least-privilege Bedrock permissions
  • Route on-premises traffic privately to Bedrock and meet data-residency and edge-latency requirements with interface endpoints, Route 53 Resolver, AWS Outposts and AWS Wavelength
  • Build CI/CD pipelines for GenAI components with scored evaluation gates, security scans, pinned prompt and guardrail versions and automatic rollback
  • Design a GenAI gateway that cannot be bypassed and that enforces token budgets, per-team metrics, audit logging and cost allocation

What does AIP-C01 Task 2.3 cover?

Task 2.3 is about connecting foundation model (FM) capabilities to the systems an enterprise already runs, securely and repeatably. It has five skills: connecting to legacy and on-premises systems, adding GenAI features to existing applications, controlling who can reach models and data, meeting data-residency and edge requirements, and releasing GenAI components through CI/CD pipelines and a central GenAI gateway. Most questions describe a working enterprise system and ask which integration design meets every stated constraint.

SkillWhat it asks you to decideTypical AWS tools
2.3.1 Enterprise connectivityHow a GenAI workflow reaches legacy APIs, decouples from consumers and stays in sync with systems of recordStep Functions HTTP Task, EventBridge API destinations and connections, event buses, archive and replay, Amazon MQ, EventBridge Pipes, AWS DMS, SQS FIFO
2.3.2 Integrated AI capabilitiesHow to add GenAI routes, webhooks and event-driven enhancements to existing applicationsAmazon API Gateway (private APIs, authorizers, request validation), Lambda webhook handlers, EventBridge rules and partner event sources
2.3.3 Secure access frameworksHow people and services are identified, which models and data they may use, and with which credentialsAmazon Cognito, IAM Identity Center, SAML session tags, SCPs, IAM actions for Bedrock, Bedrock API keys
2.3.4 Cross-environment solutionsHow on-premises, in-country and edge workloads use FMs without breaking compliance or latency targetsInterface VPC endpoints, Direct Connect, Site-to-Site VPN, Route 53 Resolver, AWS Outposts, AWS Wavelength
2.3.5 CI/CD and GenAI gatewaysHow GenAI changes are tested, scanned, released and rolled back, and how shared controls are applied to every consumerCodePipeline, CodeBuild, Amazon Inspector, CloudFormation Guard, CodeDeploy, API Gateway plus Lambda gateways, application inference profiles

Neighbouring tasks are only context here: asynchronous buffering of long model calls and provider abstraction belong to Domain 1, streaming and retry APIs to Task 2.4, knowledge-base access filtering to Task 1.4, and guardrail content policies to Task 3.1.

How do serverless GenAI workflows call legacy and on-premises APIs?

A GenAI workflow calls an existing HTTP system with a managed caller that holds the credentials for it: an AWS Step Functions HTTP Task or an Amazon EventBridge API destination. Both use an EventBridge connection, which stores the authorization (Basic, OAuth client credentials or API key) in AWS Secrets Manager, so no secret lives in code or in the workflow definition. A connection can also reach a private API: it references a VPC Lattice resource configuration, and on-premises APIs are reachable when that VPC has a route to them over AWS Direct Connect or Site-to-Site VPN, so traffic never crosses the public internet.

Step Functions HTTP TaskEventBridge API destination
Started byA state in a workflow, which can use the responseAn EventBridge rule (fire-and-forget delivery of an event)
Request timeout60 seconds5 seconds
ThrottlingWorkflow-level controlsInvocation rate limit per second on the destination
FailuresRetry and Catch blocks in the stateRetry policy (by default up to 24 hours and 185 attempts), then a dead-letter queue

Three details decide many designs:

  • Slow backends. Any backend slower than 5 seconds fails every API destination call, while an HTTP Task waits up to 60 seconds. A backend slower than that, or a private API with an internal domain name, a private certificate authority or mutual TLS, needs a Lambda function (in the VPC, reading its token from Secrets Manager): for private APIs the HTTP Task supports only public domain names with publicly trusted certificates.
  • Partner rate limits. When a burst of generated content would exceed what a partner API accepts, cap the API destination's invocations per second at what the partner allows. EventBridge retries 429 and 5xx responses, but a rate far below the arrival rate builds a backlog that can outlast the retry window, so give the target a dead-letter queue so nothing is lost. Lambda reserved concurrency limits parallel executions, not requests per second, so it does not express a per-second limit.
  • Long human or batch steps. When a legacy system accepts a job, finishes it hours later and can call a URL back, use the callback pattern: a task with .waitForTaskToken sends the task token with the job, and a callback endpoint (for example API Gateway and Lambda) calls SendTaskSuccess or SendTaskFailure. The workflow resumes the moment the callback arrives, with no polling of a rate-limited status endpoint. Callbacks need a Standard workflow: Express workflows run for at most 5 minutes and do not support .waitForTaskToken. An HTTP Task is synchronous, so it cannot wait hours for a result.

How do event-driven architectures decouple GenAI producers from consumers?

Event-driven integration decouples a GenAI producer from its consumers: the producer publishes each result once and never knows who reads it. On AWS the default building block is a custom EventBridge event bus, with one rule per consumer. Adding a consumer means adding a rule, never changing the producer.

OptionFan-outReplay historyFits when
EventBridge custom bus, rule per consumerYes, with content-based filtering per ruleYes: an archive keeps events for a retention period you set, and a replay re-sends a time window, optionally to selected rules onlyMany independent consumers, reprocessing after a consumer bug
SNS standard topic with SQS subscriptionsYesNo replay of past messagesSimple fan-out without reprocessing needs
One shared standard SQS queueNo: consumers compete for messagesNoWork distribution to one kind of worker
Amazon MQ (ActiveMQ or RabbitMQ)Broker-definedBroker-definedExisting JMS, AMQP, MQTT or STOMP clients that cannot change

Useful EventBridge patterns for GenAI enhancements:

  • Filter before you pay. An event pattern can match fields inside detail, including whether a field exists ({"detail": {"escalationFlag": [{"exists": true}]}}), so the rule invokes the model-calling target only for the events that need it. An input transformer changes the payload, not which events match, and detail-type is a separate top-level attribute. Lambda filter criteria exist only for poll-based event source mappings (for example SQS, Kinesis, DynamoDB Streams, Amazon MSK or Amazon MQ), not for EventBridge's push invocations.
  • SaaS events without polling. When a SaaS product is an EventBridge partner event source, associate it with a partner event bus in your account; rules on the default bus do not see partner events. A rule on that bus can start a workflow directly, replacing scheduled polling or a webhook receiver.
  • Remove glue functions. A rule can start a Step Functions workflow that calls bedrock:InvokeModel and DynamoDB PutItem through optimized service integrations. A Retry block on the task (for example on Bedrock.ThrottlingException) replaces hand-written retry code. An EventBridge target's retry policy covers only the delivery of the event to the target, and API destinations do not sign requests with SigV4, so they cannot call AWS APIs such as Bedrock.
  • Cross-account delivery. To deliver events to a bus in another account with no forwarding code, add a rule on the sending bus whose target is the other bus's ARN, and allow events:PutEvents from the sending account or organization in the receiving bus's resource policy. A rule on the receiving bus cannot see another bus's events.
  • Legacy brokers. When an on-premises application publishes with JMS to ActiveMQ and its code cannot change, migrate the broker to Amazon MQ for ActiveMQ (managed, same protocols) and connect its queue to a Step Functions workflow with an EventBridge pipe, a point-to-point integration that supports Amazon MQ as a source and adds optional filtering and enrichment. Pointing a JMS client at SQS or SNS would need protocol changes, and polling an on-premises broker keeps both the broker and custom code.

How do you keep GenAI applications in sync with enterprise systems?

Keeping a GenAI application in step with a system of record needs three things: change capture from the source, the right ordering when changes are processed, and write-backs that never destroy newer data.

  • Change data capture. AWS Database Migration Service (DMS) with a full load plus ongoing replication task reads the source database's transaction logs and applies inserts, updates and deletes to a target such as Amazon DynamoDB, usually within seconds. It needs no triggers or application changes, which matters when another team owns the source. Scheduled copies (AWS Glue jobs, hourly full loads, nightly exports) always leave a staleness window.
  • Ordered, parallel processing. When several changes to the same entity arrive in a burst and each one regenerates an AI output, process them with an SQS FIFO queue whose message group ID is the entity ID (for example the account ID). FIFO delivers messages in order within each group, and the Lambda event source mapping processes different groups in parallel. One shared group serializes everything; a standard queue never guarantees order, whatever its concurrency. The message deduplication ID is a different setting: it suppresses messages with the same ID within a 5-minute interval, so putting the entity ID there would silently drop real changes.
  • Safe write-back. An FM call takes seconds, and people may edit the same record meanwhile. Use optimistic locking: keep a version attribute that every writer increments, and make the AI write-back a DynamoDB conditional update on the version it read. If the record changed, the write fails and the service can re-read or discard its suggestion. A condition that the key exists does not detect edits, a transaction cannot span a long external call, and a strongly consistent read only guarantees freshness at the moment of reading.

How do you add GenAI routes and webhooks to existing applications?

The usual way to add a GenAI feature to an existing microservice API is a new Amazon API Gateway route whose Lambda integration calls Amazon Bedrock, placed beside the existing routes so clients keep the same API. The surrounding API Gateway features decide who can call it and what reaches the model.

RequirementFeatureNote
Reachable only from specific VPCs, never the internetPrivate REST API; consumers create execute-api interface endpoints; the API's resource policy allows those endpoints (aws:SourceVpce) or VPCs (aws:SourceVpc)Lambda routes and VPC link routes to an internal Network Load Balancer coexist in one API. HTTP APIs have no private endpoint type; WAF rules or account-based resource policies on a Regional API leave the public endpoint in place.
Clients already hold OAuth 2.0 / OIDC tokensJWT authorizer on an HTTP API, configured with the issuer and audience, plus authorization scopes on the routeInvalid tokens or missing scopes are rejected with 401/403 before the integration runs. Use a Lambda authorizer only when native validation is not enough; IAM authorization needs SigV4-signing callers.
Reject malformed bodies before paying for a model callRequest validator plus a JSON Schema model on a REST API methodReturns 400 Bad Request without invoking Lambda. Mapping templates reshape requests; WAF size rules see only size.
Meter or throttle callersAPI keys with usage plansAPI keys identify callers for usage plans; they are not an authentication mechanism.

Lambda webhook handlers receive events that another system pushes, and webhook senders apply their own response timeout and retry when it passes. Three rules make a handler reliable:

  1. Acknowledge fast, process later. Validate the request, put it on an SQS queue, return 2xx, and let a queue consumer call Bedrock. A model call inside the request path outlasts the sender's timeout and causes retries and duplicate outputs; raising the Lambda or API Gateway timeout cannot change the sender's patience, and streaming does not shorten the time to a complete result.
  2. Verify the signature over the raw body. An HMAC is computed over exact bytes. Parsing and re-serializing JSON changes spacing, key order, escaping or number formatting, so genuine requests fail verification. Compute the HMAC over the body exactly as received (with Lambda proxy integration, the body string, base64-decoded first when isBase64Encoded is true) and reject forgeries before any model call. API Gateway request validators check presence and shape, not signatures.
  3. Make processing idempotent. Senders may resend the same delivery long after the first attempt. Record each delivery ID in DynamoDB with a conditional write (attribute_not_exists) and skip events whose write fails. This works whenever the retry arrives and keeps processing parallel. SQS FIFO deduplication only covers 5 minutes, a single message group removes parallelism, and the queue's visibility timeout addresses SQS redelivery, not sender retries.

How do you federate enterprise identities and control access to models and data?

Enterprise users should reach GenAI features with their existing corporate identity, never with an IAM user per person. Which AWS service does the federating depends on who calls Bedrock.

Who calls BedrockFederation pattern
A backend (Lambda behind API Gateway) on behalf of signed-in usersFederate the SAML or OIDC IdP into an Amazon Cognito user pool; API Gateway validates its tokens with a Cognito authorizer; the backend calls Bedrock with its execution role. User pool tokens are not AWS credentials.
Client code with no backend (desktop or mobile SDK calls)A Cognito identity pool trusting the IdP exchanges its token for temporary AWS credentials. Rules-based role mapping on a claim (for example department) picks a role whose policy allows only that group's model, so IAM enforces the restriction rather than client code. The default authenticated role gives every user the same permissions.
People using the console or CLI across many accountsIAM Identity Center federated to the corporate directory (for example Microsoft Entra ID), users and groups synced automatically over SCIM, and permission sets granted per group. Group changes in the IdP grant and remove access everywhere; Identity Center provisions the roles in each account.

Role-based and attribute-based access. When many users federate into one shared role, role permissions cannot tell them apart. Pass an attribute such as department as a SAML session tag (identity pools can also map token claims to principal tags) and reference it in policies, for example an S3 resource of arn:aws:s3:::bucket/${aws:PrincipalTag/department}/*. Each session then reaches only its own prefix, and a new department needs only the attribute in the IdP, not another role, bucket statement or access point.

Model access across an organization. In commercial Regions most serverless Bedrock models are enabled on first invocation: Bedrock starts the subscription automatically the first time a model is called, so developers can use a newly released model without any request. The Model access page applies to AWS GovCloud (US), and denying aws-marketplace:Subscribe does not stop a first invocation. The preventive control is a deny: an SCP that denies the Bedrock invoke actions with NotResource listing the approved model (and inference profile) ARNs blocks every other model in every account, including models added later.

What does least-privilege API access to foundation models look like?

Least-privilege FM access means granting only the Bedrock actions the code actually performs, on the exact model or profile ARNs it uses, with short-lived credentials.

  • Actions behind the APIs. Bedrock has no separate IAM actions for the Converse APIs: Converse is authorized by bedrock:InvokeModel and ConverseStream by bedrock:InvokeModelWithResponseStream. Switching a function to streaming therefore needs the streaming action on the same model ARN; a wildcard resource would also work but grants more than needed.
  • Cross-Region inference profiles. A profile can serve a request from any Region in its group, and IAM checks the foundation-model ARN in the Region that serves it. A policy naming the profile and only the source-Region model fails intermittently (more often at peak, when more traffic is routed away). Allow the profile ARN and the foundation-model ARN in every Region of the profile, and add the bedrock:InferenceProfileArn condition so those model permissions apply only through that profile. Throttling returns a throttling error, not an access-denied error.
  • Bedrock API keys. Some tools can only send a bearer token. A short-term API key is generated from an IAM principal's session, inherits its permissions and expires with the session, at most 12 hours; AWS recommends it for production. A long-term key is an IAM service-specific credential attached to an IAM user and is meant for exploration. To stop every long-term key at once, deny bedrock:CallWithBearerToken when bedrock:bearerTokenType is LONG_TERM (for example in an SCP). Denying iam:CreateServiceSpecificCredential only prevents new keys; existing keys keep working.
  • No long-lived secrets on clients. Prefer roles (Lambda execution roles, CodeBuild service roles, identity-pool roles) whose temporary credentials rotate automatically over any key distributed to laptops or builds.

How do on-premises, in-country and edge workloads reach foundation models?

Cross-environment GenAI solutions keep data where regulations or latency require, and route only permitted traffic privately to Amazon Bedrock in a Region. There are three building blocks: private routing from on premises, AWS Outposts for on-site data, and AWS Wavelength for 5G edge clients.

Private routing from on premises

  • Bedrock publishes interface VPC endpoints (AWS PrivateLink) for its APIs, for example bedrock, bedrock-runtime, bedrock-agent and bedrock-agent-runtime. The endpoint's network interfaces have private IP addresses, so data-center clients connected over a Direct Connect private virtual interface or Site-to-Site VPN call Bedrock without touching a public endpoint. Bedrock has no gateway endpoint (those exist only for S3 and DynamoDB); a public virtual interface or a NAT gateway both end at the public endpoint.
  • Private DNS on the endpoint creates a private hosted zone that overrides the public service name only for resolvers in the VPC. On-premises hosts ask their own DNS servers, which still return public addresses. Create a Route 53 Resolver inbound endpoint and forward the Bedrock domain to it from the on-premises DNS servers; unchanged SDK default endpoints then resolve to the private IPs. (An outbound endpoint forwards from the VPC to on premises, the opposite direction.)
  • Endpoint policies. The default endpoint policy allows every action on every resource for every principal. To make the endpoint a control point, replace it with a policy that allows only the approved model ARNs and adds a condition such as aws:PrincipalAccount (or aws:PrincipalOrgID). Security groups and DNS settings only decide which hosts can reach the endpoint, and an SCP cannot govern principals from outside the organization.
  • Endpoint-only credentials. An endpoint policy cannot stop the same credentials being used on the public endpoint from elsewhere. To refuse calls that bypass the endpoint, add a deny on the role for the Bedrock invoke actions when aws:SourceVpce is not the endpoint's ID (or aws:SourceVpc is not the VPC). aws:SourceIp does not work for endpoint traffic, which carries private addressing.

AWS Outposts for in-country and on-site data

Outposts extends a Region's EC2, EBS, S3 on Outposts, Amazon RDS, Amazon ECS and Amazon EKS to a customer site, connected to its parent Region by a service link. Amazon Bedrock and SageMaker AI hosting do not run on Outposts, so a private endpoint changes the network path but not where inference happens. Two compliant patterns follow:

  • De-identify locally. Keep the application and identifiable data on the Outpost, remove identifiers there, and let only the anonymized text travel to the Bedrock Region the Outpost is homed to, when the rules allow de-identified data to leave. Knowledge bases, cross-Region inference profiles and Bedrock calls with raw text would all move identifiable content into Regions.
  • Self-host an open-weight model. When nothing may leave the site, run an approved open-weight model on GPU-backed EC2 instances (such as G4dn) or EKS nodes on the Outposts rack, operated with familiar AWS APIs. Bedrock Custom Model Import and SageMaker AI endpoints still run in the Region.

AWS Wavelength for 5G edge inference

Wavelength Zones are AWS infrastructure embedded in a telecommunications carrier's 5G network, reached through a carrier gateway, and they offer GPU instance types (for example g4dn) suitable for small models. Devices on that carrier in that metro reach them without traversing the internet, which gives the lowest latency for mobile clients. Local Zones are metro-close but outside the carrier network, Outposts serves customer premises, and CloudFront Functions cannot run models. VPC endpoints cannot be created in a Wavelength Zone: put the Bedrock interface endpoint in a regular (non-Wavelength) subnet of the same VPC, and instances in the carrier-zone subnet reach it to reach Bedrock in the parent Region privately.

How do CI/CD pipelines test, scan and roll back GenAI components?

A GenAI CI/CD pipeline treats prompts, guardrails, model choices and agent configurations as releasable artifacts: AWS CodePipeline runs CodeBuild evaluation and security gates before deployment, and deployment strategies roll a bad release back automatically.

  • Score, don't string-match. FM output varies in wording even when it is equally correct, so exact comparisons fail randomly and teams learn to skip them (temperature 0 and retries do not fix this). A CodeBuild evaluation stage runs a fixed test set, grades every output against a reference answer (LLM-as-a-judge or semantic similarity), and fails the build if the overall result falls under a fixed bar or regresses from the previous run.
  • Security gates before deploy. The CodePipeline InspectorScan action scans a container image in Amazon ECR (ECR image mode) or source code, produces an SBOM-based vulnerability report, and fails the action when findings exceed its critical, high, medium or low thresholds. AWS CloudFormation Guard run in CodeBuild checks templates against policy rules, for example rejecting bedrock:InvokeModel on Resource: "*". Inspector repository scanning, GuardDuty runtime monitoring and AWS Config rules are valuable detective controls, but they act on what is already pushed or running and cannot stop a release.
  • Pin versions through the pipeline. A prompt referenced by its ARN without a version, or a guardrail passed as version DRAFT, follows the working draft, so a console edit reaches production immediately. Create a numbered prompt version and guardrail version in the pipeline after the evaluation stage (CreatePromptVersion, CreateGuardrailVersion or the matching CloudFormation resources) and reference those versions.

Rollback support comes in three forms:

MechanismWhat triggers rollbackKey detail
CodeDeploy canary or linear deployment of a Lambda aliasA CloudWatch alarm entering ALARM during traffic shiftingGenAI regressions often return HTTP 200 with no errors or extra latency, so alarm on quality metrics (guardrail intervention rate, user ratings, evaluation scores), not only Errors, Duration or Throttles.
CodePipeline stage rollback (V2 pipeline type only)A failed stage, when its failure condition result is ROLLBACKStarts a new execution of the stage with the source revisions and variables of its last successful execution. Put the post-deploy evaluation action in the same stage as the deploy action so a failed evaluation rolls back. RETRY re-runs the same bad revision; the source stage cannot roll back.
Bedrock agent aliasAn operator updateAgent versions are immutable snapshots and applications call an alias, so pointing the alias back to the previous version restores behaviour for every caller with no redeployment. Editing or preparing the working draft does not change what an alias serves.

What does a GenAI gateway control, and how does it measure each consumer?

A GenAI gateway is a centralized abstraction layer, typically Amazon API Gateway in front of a Lambda function that calls Bedrock, that applies shared controls once for every consuming team: authentication, guardrails, prompt and response logging, quotas, routing and metering. Its controls hold only if consumers cannot go around it, so the gateway's role keeps Bedrock invoke permissions while team roles lose them (for example with an SCP on the team accounts). A shared SDK wrapper or per-account settings depend on every team's cooperation, and an SCP that only requires a guardrail identifier leaves prompt and response retention scattered.

NeedWorksDoes not work, and why
Hard per-team budget in tokensAdd each Converse response's input and output token usage to a per-team counter (an atomic DynamoDB update) and reject requests once the budget is reachedUsage plans count requests and throttle best-effort, with no notion of tokens; AWS Budgets alerts on delayed cost data and does not enforce
Per-team latency, token and error dashboards and alarmsThe gateway emits its own metrics with a team dimension, cheaply via CloudWatch embedded metric format logsThe AWS/Bedrock metrics are keyed by model, not by consumer; X-Ray sampling is not a metering source
Audit one team's invocation log recordsPass the team ID in the Converse requestMetadata map (up to 16 key-value pairs), which is recorded in model invocation logs for filteringModel invocation logging is a single configuration per account and Region, not one per team
Per-team spend in Cost Explorer behind one shared roleAn application inference profile per team, tagged with the team name and activated as a cost allocation tag; the gateway picks the profile from the caller's API keyIAM principal cost allocation tags split spend by calling principal, which is the same single role for every team behind the gateway; requestMetadata does not reach billing; usage types do not identify teams

When each team calls Bedrock with its own IAM role, Bedrock's IAM principal cost allocation (tags on the calling role or user) is the simpler way to split spend; application inference profiles are the answer when the principal is shared.

Tip. Task 2.3 questions describe an enterprise system that is already running, such as a legacy claims API, an on-premises ERP, a SaaS platform, a corporate identity provider, a data center on Direct Connect or a multi-team platform, and ask for the integration that meets every stated constraint: no public internet path, no code or configuration change, no per-department policy edits, no long-lived credentials, enforcement outside the client, in-country data, the least custom code, or measurement in tokens rather than requests. Wrong options are real AWS features that miss one constraint, such as an API destination for a slow backend, FIFO deduplication for day-late retries, a usage plan for a token budget, an endpoint policy where the credentials can be used elsewhere, or detective controls where a pipeline gate is required. Expect symptom-led items (intermittent AccessDenied with a cross-Region profile, signatures that never verify, on-premises hosts resolving public addresses, an endpoint that cannot be created in a Wavelength subnet) and Select TWO items in which each correct option covers a different requirement.

Key takeaways
  • EventBridge connections hold API credentials in Secrets Manager and reach private APIs through VPC Lattice resource configurations; API destinations time out after 5 seconds, Step Functions HTTP Tasks after 60 seconds.
  • Use .waitForTaskToken in a Standard workflow when a legacy system finishes hours later and can call back; Express workflows cannot wait for callbacks.
  • A custom EventBridge bus with a rule per consumer decouples producers; archive and replay reprocess history; filter events with patterns before they invoke a model.
  • SQS FIFO message group ID = entity ID gives per-entity order with parallelism; FIFO deduplication spans only 5 minutes, so webhook idempotency needs a conditional write on the delivery ID.
  • Webhook handlers acknowledge fast and queue the model call, and verify HMAC signatures over the raw body.
  • Cognito user pools for app users behind a backend, identity pools with rules-based role mapping for direct SDK calls, IAM Identity Center with SCIM for workforce access across accounts.
  • Serverless Bedrock models are enabled on first invocation; block unapproved models with an SCP deny using NotResource.
  • ConverseStream needs bedrock:InvokeModelWithResponseStream; cross-Region inference profiles need the model allowed in every Region of the profile.
  • Short-term Bedrock API keys for production; deny bedrock:CallWithBearerToken for LONG_TERM tokens to shut off long-term keys.
  • Bedrock does not run on Outposts and VPC endpoints cannot live in Wavelength Zones; a gateway enforces token budgets, per-team metrics, requestMetadata audit tags and per-team application inference profiles.

Frequently asked questions

When should I use a Step Functions HTTP Task instead of an EventBridge API destination?

Use a Step Functions HTTP Task when the workflow needs the response or the backend takes longer than a few seconds: HTTP Task requests time out after 60 seconds, while EventBridge API destinations time out after 5 seconds. Both use an EventBridge connection that keeps credentials in AWS Secrets Manager and can reach private APIs. API destinations suit fire-and-forget event delivery and offer a per-second invocation rate limit and a dead-letter queue.

How do I stop developers using Amazon Bedrock models that were not approved?

Use a service control policy that denies the Bedrock invoke actions with NotResource listing the approved model and inference profile ARNs. In commercial Regions most serverless models are enabled automatically on first invocation, so there is no access request to withhold, and denying aws-marketplace:Subscribe does not stop a first call. The SCP also covers models released later.

Which IAM permission does the Bedrock ConverseStream API need?

ConverseStream is authorized by bedrock:InvokeModelWithResponseStream, and Converse by bedrock:InvokeModel; Bedrock has no separate Converse actions. Grant the streaming action on the same model or inference profile ARN to keep least privilege.

What is the difference between short-term and long-term Amazon Bedrock API keys?

A short-term Bedrock API key is generated from an IAM principal's session, inherits that principal's permissions and expires within 12 hours; AWS recommends it for production. A long-term key is an IAM service-specific credential on an IAM user, intended for exploration. Denying bedrock:CallWithBearerToken when bedrock:bearerTokenType is LONG_TERM blocks every long-term key, including existing ones.

How can an on-premises application call Amazon Bedrock privately?

Create an interface VPC endpoint for bedrock-runtime in a VPC that the data center reaches over AWS Direct Connect (private virtual interface) or Site-to-Site VPN. Because private DNS on the endpoint only affects resolvers inside the VPC, add a Route 53 Resolver inbound endpoint and forward the Bedrock domain to it from the on-premises DNS servers so unchanged SDKs resolve the private addresses.

Can Amazon Bedrock run on AWS Outposts?

No. AWS Outposts runs services such as EC2, EBS, S3 on Outposts, RDS, ECS and EKS on premises, but Amazon Bedrock and SageMaker AI hosting run only in AWS Regions. For data that must stay on site, either de-identify it on the Outpost before calling Bedrock in the parent Region, or self-host an approved open-weight model on GPU instances on the Outposts rack.

How do I enforce a per-team token budget in a GenAI gateway?

Read the token usage that the Converse API returns with each response, add it to a per-team counter with an atomic DynamoDB update, and have the gateway reject requests once the counter reaches the budget. API Gateway usage plans only count requests and AWS Budgets only alerts on delayed cost data, so neither enforces a token budget.

How do I roll back a bad GenAI release automatically when there are no errors?

Deploy the Lambda alias with an AWS CodeDeploy canary or linear configuration and attach CloudWatch alarms on quality metrics such as guardrail intervention rate or user ratings. Poor or blocked answers usually return HTTP 200, so error and latency alarms stay quiet. In CodePipeline, a stage whose failure condition is ROLLBACK returns to its last successful execution when a post-deploy evaluation in that stage fails.

Source

This lesson covers the "Implementation and Integration" domain of the official AIP-C01 exam guide. Vendors revise their guides — check the source for the current version.

Test yourself on this topic
Practice now

Sign up free to mark lessons complete, bookmark topics and track your exam readiness.

Spotted a mistake in this lesson?