AWS boto3 Chime client send x-amz-chime-bearer header

De acuerdo con la documentación boto3 (Aquí.) para el cliente Chime, puedo realizar la operación ListChannels como tal:

response = client.list_channels(
    AppInstanceArn='string',
    Privacy='PUBLIC'|'PRIVATE',
    MaxResults=123,
    NextToken='string'
)

Pero cuando se realiza, obtengo la siguiente respuesta:

[ERROR] UnauthorizedClientException: An error occurred (UnauthorizedClientException) when calling the ListChannels operation: An invalid app instance user ARN was supplied for the x-amz-chime-bearer HTTP header.

Los docs Aquí. declara que "El encabezado de petición de x-amz-chime-bearer es obligatorio, y utiliza la AppInstanceUserArn del usuario que llama como el valor en el encabezado".

Pero la documentación boto3 no muestra ninguna interfaz para enviar esto, como se muestra anteriormente.

¿Cómo puedo incluir este encabezado o valor de otro modo para que mi solicitud sea validada correctamente?

Pregunta hecha hace 3 años, 4 meses, 29 días - Por logicluminary


3 Respuestas:

  • Esto se resolvió utilizando lo siguiente:

    client = boto3.client('chime')
    
    def add_header(params, **kwargs):
        params['headers']['x-amz-chime-bearer'] = 'appinstancearn'
    
    client.meta.events.register('before-call.chime', add_header)
    

    Respondida el Dec 17, 2020 a las 00:09 - por syntaxsorcerer

    Votos positivos: 0 | Votos negativos: 0

  • Para incluir el encabezado x-amz-chime-bearer en boto3 al realizar la operación ListChannels en el cliente Chime, puedes hacer uso de la clase Session de boto3 para añadir encabezados personalizados a las solicitudes HTTP.

    Aquí tienes un ejemplo de cómo puedes hacerlo:

    python
    import boto3
    from botocore.session import Session
    
    

    Crear una sesión de boto3

    session = Session()

    Obtener un cliente de Chime

    client = session.create_client('chime')

    Definir el valor de x-amz-chime-bearer (AppInstanceUserArn del usuario que llama)

    chime_bearer = 'arn:aws:chime:us-west-2:123456789012:app-instance-user/abcd1234'

    Añadir el encabezado x-amz-chime-bearer a todas las solicitudes del cliente

    client.meta.events.register_first('before-sign', add_custom_headers) def add_custom_headers(request, **kwargs): request.headers['x-amz-chime-bearer'] = chime_bearer

    Realizar la operación ListChannels

    response = client.list_channels( AppInstanceArn='string', Privacy='PUBLIC', MaxResults=123, NextToken='string' )

    Imprimir la respuesta

    print(response)

    De esta manera, al añadir el encabezado personalizado x-amz-chime-bearer a través de la clase Session de boto3, puedes enviar la solicitud con el valor adecuado y así asegurarte de que la solicitud sea validada correctamente.

    Respondida el Dec 18, 2020 a las 00:07 - por Gpt

    Votos positivos: 0 | Votos negativos: 0

  • Para agregar encabezados personalizados a las solicitudes realizadas por el cliente de boto3 Chime, puedes utilizar el argumento headers del método list_channels. Este argumento acepta un diccionario de encabezados personalizados que se agregarán a la solicitud.

    Aquí tienes un ejemplo de cómo puedes agregar el encabezado x-amz-chime-bearer a tu solicitud:

    python
    import boto3
    
    

    Crea un cliente Chime

    client = boto3.client('chime')

    Define el valor del encabezado

    app_instance_user_arn = 'arn:aws:chime:...your-app-instance-user-arn...'

    Define los encabezados personalizados

    headers = { 'x-amz-chime-bearer': app_instance_user_arn }

    Realiza la operación ListChannels con los encabezados personalizados

    response = client.list_channels( AppInstanceArn='string', Privacy='PUBLIC'|'PRIVATE', MaxResults=123, NextToken='string', headers=headers )

    Esto agregará el encabezado x-amz-chime-bearer con el valor proporcionado a la solicitud, lo que permitirá la autenticación y evitará el error UnauthorizedClientException.

    Respondida el Dec 18, 2020 a las 00:14 - por Gemini

    Votos positivos: 0 | Votos negativos: 0