> ## Documentation Index
> Fetch the complete documentation index at: https://docs.presenton.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Configure Amazon Bedrock

> Connect Presenton to Amazon Bedrock with an API key, AWS credentials, a model ID, or an inference profile.

Presenton uses Amazon Bedrock's Converse API for presentation generation, editing, and AI chat. The value you configure as the model is passed to Bedrock as `modelId`.

## Before you start

You need:

* Bedrock model access in the AWS account and region you will use.
* A standard model ID or inference profile ARN.
* Either a Bedrock API key or AWS credentials with invoke permissions.
* A running self-hosted Presenton instance.

## 1. Choose the model reference

Use one of these formats:

| Model reference       | When to use                                                        | Example                                                                                      |
| --------------------- | ------------------------------------------------------------------ | -------------------------------------------------------------------------------------------- |
| On-demand model ID    | The model supports on-demand invocation                            | `us.anthropic.claude-3-5-haiku-20241022-v1:0`                                                |
| Inference profile ARN | The model requires a provisioned or cross-region inference profile | `arn:aws:bedrock:us-east-1:YOUR_ACCOUNT_ID:inference-profile/us.anthropic.claude-sonnet-4-6` |

Some newer models do not accept a plain model ID for on-demand throughput. Copy the full inference profile ARN from the Bedrock console when AWS requires one.

## 2. Choose one authentication method

<Tabs>
  <Tab title="Bedrock API key">
    ```dotenv theme={null}
    LLM=bedrock
    BEDROCK_REGION=us-east-1
    BEDROCK_MODEL=us.anthropic.claude-3-5-haiku-20241022-v1:0
    BEDROCK_API_KEY=replace-with-your-key
    ```
  </Tab>

  <Tab title="AWS access keys">
    ```dotenv theme={null}
    LLM=bedrock
    BEDROCK_REGION=us-east-1
    BEDROCK_MODEL=us.anthropic.claude-3-5-haiku-20241022-v1:0
    BEDROCK_AWS_ACCESS_KEY_ID=replace-with-your-access-key
    BEDROCK_AWS_SECRET_ACCESS_KEY=replace-with-your-secret
    ```
  </Tab>

  <Tab title="Temporary credentials">
    ```dotenv theme={null}
    LLM=bedrock
    BEDROCK_REGION=us-east-1
    BEDROCK_MODEL=us.anthropic.claude-3-5-haiku-20241022-v1:0
    BEDROCK_AWS_ACCESS_KEY_ID=replace-with-your-access-key
    BEDROCK_AWS_SECRET_ACCESS_KEY=replace-with-your-secret
    BEDROCK_AWS_SESSION_TOKEN=replace-with-your-session-token
    ```
  </Tab>
</Tabs>

Use only one primary authentication path. Do not combine `BEDROCK_API_KEY` with explicit AWS access keys.

For local development, `BEDROCK_PROFILE_NAME` can select a named profile from `~/.aws/credentials`; ensure the credentials file is available to the process or container.

## 3. Grant IAM permissions

The IAM user or role needs permission to invoke the configured model or inference profile:

```json theme={null}
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "bedrock:InvokeModel",
        "bedrock:InvokeModelWithResponseStream"
      ],
      "Resource": "arn:aws:bedrock:us-east-1:YOUR_ACCOUNT_ID:inference-profile/*"
    }
  ]
}
```

Scope `Resource` to the specific models or inference profiles required by your organization. Also enable model access in the Bedrock console for the foundation model behind the selected profile.

## 4. Start Presenton

<Tabs>
  <Tab title="On-demand model">
    ```bash theme={null}
    docker run -it --name presenton \
      --publish 5001:80 \
      --env LLM=bedrock \
      --env BEDROCK_REGION=us-east-1 \
      --env BEDROCK_AWS_ACCESS_KEY_ID=YOUR_ACCESS_KEY_ID \
      --env BEDROCK_AWS_SECRET_ACCESS_KEY=YOUR_SECRET_ACCESS_KEY \
      --env BEDROCK_MODEL=us.anthropic.claude-3-5-haiku-20241022-v1:0 \
      --env CAN_CHANGE_KEYS=false \
      --volume "./app_data:/app_data" \
      ghcr.io/presenton/presenton:v0.9.0-beta
    ```
  </Tab>

  <Tab title="Inference profile">
    ```bash theme={null}
    docker run -it --name presenton \
      --publish 5001:80 \
      --env LLM=bedrock \
      --env BEDROCK_REGION=us-east-1 \
      --env BEDROCK_AWS_ACCESS_KEY_ID=YOUR_ACCESS_KEY_ID \
      --env BEDROCK_AWS_SECRET_ACCESS_KEY=YOUR_SECRET_ACCESS_KEY \
      --env BEDROCK_MODEL=arn:aws:bedrock:us-east-1:YOUR_ACCOUNT_ID:inference-profile/us.anthropic.claude-sonnet-4-6 \
      --env CAN_CHANGE_KEYS=false \
      --volume "./app_data:/app_data" \
      ghcr.io/presenton/presenton:v0.9.0-beta
    ```
  </Tab>
</Tabs>

You can instead set the same values in Settings → Text provider or in the `.env` file used by Docker Compose.

## 5. Test the connection

Open [http://localhost:5001](http://localhost:5001), generate a two-slide presentation, and inspect the container logs if generation fails:

```bash theme={null}
docker logs --tail 150 presenton
```

## Troubleshooting

<AccordionGroup>
  <Accordion title="On-demand throughput is not supported">
    The model requires a foundation model or inference profile ARN. Copy the full inference profile ARN from the same region in the Bedrock console and use it as `BEDROCK_MODEL`.
  </Accordion>

  <Accordion title="AccessDeniedException">
    Confirm the principal has `bedrock:InvokeModel` and `bedrock:InvokeModelWithResponseStream` for the model or inference profile, and confirm model access is enabled for the AWS account.
  </Accordion>

  <Accordion title="Model not found or invalid identifier">
    Check the model string for whitespace, confirm it exists in `BEDROCK_REGION`, and use a full inference profile ARN for models that require one.
  </Accordion>

  <Accordion title="Bedrock authentication is incomplete">
    Supply `BEDROCK_API_KEY`, or supply both `BEDROCK_AWS_ACCESS_KEY_ID` and `BEDROCK_AWS_SECRET_ACCESS_KEY`. Do not mix the two authentication methods.
  </Accordion>

  <Accordion title="Temporary credentials fail">
    Include `BEDROCK_AWS_SESSION_TOKEN`, verify that the credentials have not expired, and restart Presenton after replacing them.
  </Accordion>
</AccordionGroup>

<Check>
  Presenton can generate and edit a test presentation through the selected Bedrock model in the configured region.
</Check>
