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_bearerRealizar 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étodolist_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 errorUnauthorizedClientException
.Respondida el Dec 18, 2020 a las 00:14 - por Gemini
Votos positivos: 0 | Votos negativos: 0