Marco Rodriguez
10/28/2024, 10:59 PMERROR i.a.c.ConnectorWatche'/;hgjkr(handleException):175 - Error performing operation: io.airbyte.workers.workload.exception.DocStoreAccessException
48
io.airbyte.workers.workload.exception.DocStoreAccessException: Unable to write output for decd338e-5647-4c0b-adf4-da0e75f5a750_4821_4_check
49
at io.airbyte.workers.workload.JobOutputDocStore.writeOutput(JobOutputDocStore.kt:72) ~[io.airbyte-airbyte-commons-worker-1.1.0.jar:?]
50
at y6t543io.airbyte.workers.workload.JobOutputDocStore.write(JobOutputDocStore.kt:38) ~[io.airbyte-airbyte-commons-worker-1.1.0.jar:?]
51
at io.airbyte.connectorSidecar.ConnectorWatcher.saveConnectorOutput(ConnectorWatcher.kt:163) [io.airbyte-airbyte-connector-sidecar-1.1.0.jar:?]
52
at io.airbyte.connectorSidecar.ConnectorWatcher.run(ConnectorWatcher.kt:72) [io.airbyte-airbyte-connector-sidecar-1.1.0.jar:?]
53
at io.airbyte.connectorSidecar.ApplicationKt.main(Application.kt:32) [io.airbyte-airbyte-connector-sidecar-1.1.0.jar:?]
54
at io.airbyte.connectorSidecar.ApplicationKt.main(Application.kt) [io.airbyte-airbyte-connector-sidecar-1.1.0.jar:?]
55
Caused by: software.amazon.awssdk.services.s3.model.S3Exception: The authorization header is malformed; the region 'us-east-1' is wrong; expecting 'eu-west-1' (Service: S3, Status Code: 400, Request ID: CES6NK545QS4ZJAR, Extended Request ID: 4cGYQArQH+hhUsH+pDYRPQzgDYuFZpOl+RmGy/fDqG95w2qYnI3PzY6UctmCiCPSuc72+E4poQE=)
56
at software.amazon.awssdk.protocols.xml.internal.unmarshall.AwsXmlPredicatedResponseHandler.handleErrorResponse(AwsXmlPredicatedResponseHandler.java:156) ~[aws-xml-protocol-2.27.8.jar:?]
57
at software.amazon.awssdk.protocols.xml.internal.unmarshall.AwsXmlPredicatedResponseHandler.handleResponse(AwsXmlPredicatedResponseHandler.java:108) ~[aws-xml-protocol-2.27.8.jar:?]
58
at software.amazon.awssdk.protocols.xml.internal.unmarshall.AwsXmlPredicatedResponseHandler.handle(AwsXmlPredicatedResponseHandler.java:85) ~[aws-xml-protocol-2.27.8.jar:?]
59
at software.amazon.awssdk.protocols.xml.internal.unmarshall.AwsXmlPredicatedResponseHandler.handle(AwsXmlPredicatedResponseHandler.java:43) ~[aws-xml-protocol-2.27.8.jar:?]
60
at software.amazon.awssdk.awscore.client.handler.AwsSyncClientHandler$Crc32ValidationResponseHandler.handle(AwsSyncClientHandler.java:93) ~[aws-core-2.27.8.jar:?]
61
at software.amazon.awssdk.core.internal.handler.BaseClientHandler.lambda$successTransformationResponseHandler$7(BaseClientHandler.java:279) ~[sdk-core-2.27.8.jar:?]
62
at software.amazon.awssdk.core.internal.http.pipeline.stages.HandleResponseStage.execute(HandleResponseStage.java:50) ~[sdk-core-2.27.8.jar:?]
user
10/28/2024, 11:00 PMDocStoreAccessException
, indicating a problem with writing output to the document store. 2. The root cause is revealed in this line: Caused by: software.amazon.awssdk.services.s3.model.S3Exception: The authorization header is malformed; the region 'us-east-1' is wrong; expecting 'eu-west-1'
This error suggests that your Airbyte configuration is trying to access an S3 bucket in the us-east-1
region, but the actual bucket is located in eu-west-1
. To resolve this issue, you need to ensure that your Airbyte configuration correctly specifies the S3 region. Here are some steps you can take: 1. Check your Airbyte configuration, specifically the S3 settings. Make sure the region is set to eu-west-1
. 2. If you're using a custom S3 client configuration, ensure it's pointing to the correct region. 3. Verify that your AWS credentials have access to the correct S3 bucket in the eu-west-1
region. 4. If you're using environment variables or AWS configuration files, make sure they're correctly set with the eu-west-1
region. Unfortunately, the provided knowledge sources don't contain specific information about this particular error or how to configure S3 regions in Airbyte's Helm chart. For more detailed guidance, you might want to check the official Airbyte documentation or open an issue on the Airbyte GitHub repository. If the problem persists after verifying your S3 configuration, you may need to seek further assistance from the Airbyte community or support channels, as this could be related to specific settings in your Kubernetes or Helm deployment that aren't covered in the general documentation.Marco Rodriguez
10/28/2024, 11:02 PMuser
10/28/2024, 11:09 PMvalues.yaml
file for Helm deployments or through environment variables for other deployment methods. 2. Secret management: For security reasons, it's recommended to store sensitive information like AWS access keys in Kubernetes secrets. This is mentioned in the [Airbyte documentation on configuring Kubernetes secrets](https://docs.airbyte.com/enterprise-setup/implementation-guide#configure-kubernetes-secrets). 3. Worker and server configuration: Both the Airbyte worker and server pods need to have the correct environment variables set. As mentioned in a GitHub issue, sometimes these variables need to be explicitly set in the extraEnv
section of your configuration [GitHub Issue Comment](https://github.com/airbytehq/airbyte/issues/31988). 4. Required environment variables: Make sure you have all the necessary environment variables set. For S3 storage, you might need variables like STATE_STORAGE_S3_BUCKET_NAME
, STATE_STORAGE_S3_REGION
, AWS_ACCESS_KEY_ID
, and AWS_SECRET_ACCESS_KEY
[GitHub Issue Comment](https://github.com/airbytehq/airbyte/issues/31988). 5. Role-based access: If you're using role-based access instead of access keys, you can omit the access_key_id
and secret_access_key
from your configuration [Airbyte DynamoDB Source Documentation](https://docs.airbyte.com/integrations/sources/dynamodb#role-based-access). If you're still experiencing issues despite confirming the correct configuration, you might want to check the logs for any specific error messages or consider opening an issue on the Airbyte GitHub repository with more details about your setup and the problem you're encountering.Marco Rodriguez
10/28/2024, 11:27 PMk get pod -n airbyte source-postgres-check-4821-1-ulzgt -o yaml
apiVersion: v1
kind: Pod
metadata:
annotations:
<http://kubernetes.io/psp|kubernetes.io/psp>: eks.privileged
creationTimestamp: "2024-10-28T22:10:16Z"
labels:
actor_type: source
airbyte: job-pod
attempt_id: "1"
auto_id: c63d84c9-5966-4ee7-b311-4bf385362647
job_id: "4821"
job_type: check
workspace_id: 06bf67c1-fe00-4155-932e-d2fbfc100921
name: source-postgres-check-4821-1-ulzgt
namespace: airbyte
resourceVersion: "1504808212"
uid: 583a3dad-fa76-4810-b99d-0212b4a6fa6b
spec:
automountServiceAccountToken: true
containers:
- command:
- sh
- -c
- |-
trap "touch TERMINATED" EXIT
/app/airbyte-app/bin/airbyte-connector-sidecar
env:
- name: ACCEPTANCE_TEST_ENABLED
value: "false"
- name: AWS_SECRET_ACCESS_KEY
value: secret
- name: WORKLOAD_API_READ_TIMEOUT_SECONDS
value: "300"
- name: KEYCLOAK_CLIENT_ID
- name: AWS_DEFAULT_REGION
value: us-east-1
- name: AIRBYTE_API_AUTH_HEADER_NAME
- name: STORAGE_BUCKET_ACTIVITY_PAYLOAD
value: airbyte-storage
- name: MICRONAUT_ENVIRONMENTS
value: worker-v2,control-plane,oss,local-secrets
- name: AWS_ACCESS_KEY_ID
value: AKIAVYDVLDWIGJ6JLB5B
- name: WORKLOAD_API_RETRY_DELAY_SECONDS
value: "2"
- name: DATA_PLANE_SERVICE_ACCOUNT_EMAIL
- name: LOG_LEVEL
value: INFO
- name: INTERNAL_API_HOST
value: <http://airbyte-airbyte-server-svc:8001>
- name: WORKLOAD_API_CONNECT_TIMEOUT_SECONDS
value: "30"
- name: STORAGE_BUCKET_LOG
value: geo-airbyte
- name: WORKLOAD_API_MAX_RETRIES
value: "5"
- name: WORKLOAD_API_HOST
value: <http://airbyte-workload-api-server-svc:8007>
- name: STORAGE_BUCKET_STATE
value: geo-airbyte
- name: S3_PATH_STYLE_ACCESS
- name: AIRBYTE_API_AUTH_HEADER_VALUE
- name: DATA_PLANE_SERVICE_ACCOUNT_CREDENTIALS_PATH
- name: LOG4J_CONFIGURATION_FILE
value: log4j2-s3.xml
- name: STORAGE_BUCKET_WORKLOAD_OUTPUT
value: airbyte-storage
- name: KEYCLOAK_INTERNAL_REALM_ISSUER
- name: STORAGE_TYPE
value: S3
- name: CONTROL_PLANE_AUTH_ENDPOINT
- name: WORKLOAD_API_BEARER_TOKEN
valueFrom:
secretKeyRef:
key: WORKLOAD_API_BEARER_TOKEN
name: airbyte-airbyte-secrets
image: airbyte/connector-sidecar:1.1.0
imagePullPolicy: IfNotPresent
name: connector-sidecar
resources: {}
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
volumeMounts:
- mountPath: /config
name: airbyte-config
- mountPath: /var/run/secrets/kubernetes.io/serviceaccount
name: kube-api-access-m7lqf
readOnly: true
workingDir: /config
- command:
- sh
- -c
- |-
# fail loudly if entry point not set
if [ -z "$AIRBYTE_ENTRYPOINT" ]; then
echo "Entrypoint was not set! AIRBYTE_ENTRYPOINT must be set in the container."
exit 127
else
echo "Using AIRBYTE_ENTRYPOINT: $AIRBYTE_ENTRYPOINT"
fi
# run connector in background and store PID
(eval "$AIRBYTE_ENTRYPOINT check --config /config/connectionConfiguration.json" > /config/jobOutput.json) &
CHILD_PID=$!
# run busy loop in background that checks for termination file and if present kills the connector operation and exits
(while true; do if [ -f TERMINATED ]; then kill $CHILD_PID; exit 0; fi; sleep 10; done) &
# wait on connector operation
wait $CHILD_PID
EXIT_CODE=$?
# write its exit code to a file for the sidecar
echo $EXIT_CODE > TEMP_EXIT_CODE.txt
# use a swap file to make creation and writing atomic
mv TEMP_EXIT_CODE.txt exitCode.txt
# propagate connector exit code by assuming it
exit $EXIT_CODE
env:
- name: AIRBYTE_VERSION
value: 1.1.0
- name: AIRBYTE_ROLE
- name: DEPLOYMENT_MODE
value: OSS
- name: OPERATION_TYPE
value: check
- name: WORKLOAD_ID
value: decd338e-5647-4c0b-adf4-da0e75f5a750_4821_1_check
image: airbyte/source-postgres:3.4.1
imagePullPolicy: IfNotPresent
name: main
resources: {}
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
volumeMounts:
- mountPath: /config
name: airbyte-config
- mountPath: /var/run/secrets/kubernetes.io/serviceaccount
name: kube-api-access-m7lqf
readOnly: true
workingDir: /config
dnsPolicy: ClusterFirst
enableServiceLinks: true
imagePullSecrets:
- {}
initContainers:
- command:
- sh
- -c
- |-
i=0
until [ $i -gt 60 ]
do
echo "$i - waiting for config file transfer to complete..."
# check if the upload-complete file exists, if so exit without error
if [ -f "/config/FINISHED_UPLOADING" ]; then
# Wait 50ms for the incoming kubectl cp call to cleanly exit
sleep .05
exit 0
fi
i=$((i+1))
sleep 1
done
echo "config files did not transfer in time"
# no upload-complete file was created in time, exit with error
exit 1
image: busybox:1.35
imagePullPolicy: IfNotPresent
name: init
resources: {}
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
volumeMounts:
- mountPath: /config
name: airbyte-config
- mountPath: /var/run/secrets/kubernetes.io/serviceaccount
name: kube-api-access-m7lqf
readOnly: true
workingDir: /config
nodeName: ip-10-4-52-89.ec2.internal
preemptionPolicy: PreemptLowerPriority
priority: 0
priorityClassName: medium
restartPolicy: Never
schedulerName: default-scheduler
securityContext: {}
serviceAccount: airbyte-admin
serviceAccountName: airbyte-admin
terminationGracePeriodSeconds: 30
tolerations:
- effect: NoExecute
key: <http://node.kubernetes.io/not-ready|node.kubernetes.io/not-ready>
operator: Exists
tolerationSeconds: 300
- effect: NoExecute
key: <http://node.kubernetes.io/unreachable|node.kubernetes.io/unreachable>
operator: Exists
tolerationSeconds: 300
volumes:
- emptyDir:
medium: Memory
name: airbyte-config
- name: kube-api-access-m7lqf
projected:
defaultMode: 420
sources:
- serviceAccountToken:
expirationSeconds: 3607
path: token
- configMap:
items:
- key: ca.crt
path: ca.crt
name: kube-root-ca.crt
- downwardAPI:
items:
- fieldRef:
apiVersion: v1
fieldPath: metadata.namespace
path: namespace
status:
conditions:
- lastProbeTime: null
lastTransitionTime: "2024-10-28T22:10:19Z"
reason: PodCompleted
status: "True"
type: Initialized
- lastProbeTime: null
lastTransitionTime: "2024-10-28T22:10:21Z"
reason: PodCompleted
status: "False"
type: Ready
- lastProbeTime: null
lastTransitionTime: "2024-10-28T22:10:21Z"
reason: PodCompleted
status: "False"
type: ContainersReady
- lastProbeTime: null
lastTransitionTime: "2024-10-28T22:10:16Z"
status: "True"
type: PodScheduled
containerStatuses:
- containerID: <containerd://88b6f94fb5cab5c296ff608a8ac7d510bfd206fea3662d126e6b99edc2533d8>4
image: <http://docker.io/airbyte/connector-sidecar:1.1.0|docker.io/airbyte/connector-sidecar:1.1.0>
imageID: <http://docker.io/airbyte/connector-sidecar@sha256:45fbae24ca25d159ae5c59632492601df917c17d494a4651c482fa47a19f2be1|docker.io/airbyte/connector-sidecar@sha256:45fbae24ca25d159ae5c59632492601df917c17d494a4651c482fa47a19f2be1>
lastState: {}
name: connector-sidecar
ready: false
restartCount: 0
started: false
state:
terminated:
containerID: <containerd://88b6f94fb5cab5c296ff608a8ac7d510bfd206fea3662d126e6b99edc2533d8>4
exitCode: 0
finishedAt: "2024-10-28T22:10:23Z"
reason: Completed
startedAt: "2024-10-28T22:10:19Z"
- containerID: <containerd://9910936bd49f0640648fdca38583304ddc9eba063f1efe690a61faa56067b64>e
image: <http://docker.io/airbyte/source-postgres:3.4.1|docker.io/airbyte/source-postgres:3.4.1>
imageID: <http://docker.io/airbyte/source-postgres@sha256:f5b42c3cf5fefb222c6368e4132934b3531886855024ee7ae91fcfc83e0474ce|docker.io/airbyte/source-postgres@sha256:f5b42c3cf5fefb222c6368e4132934b3531886855024ee7ae91fcfc83e0474ce>
lastState: {}
name: main
ready: false
restartCount: 0
started: false
state:
terminated:
containerID: <containerd://9910936bd49f0640648fdca38583304ddc9eba063f1efe690a61faa56067b64>e
exitCode: 0
finishedAt: "2024-10-28T22:10:20Z"
reason: Completed
startedAt: "2024-10-28T22:10:19Z"
hostIP: 10.4.52.89
initContainerStatuses:
- containerID: <containerd://999f6086b33e202a6676de85ff0d085c746072ec240f9d85c5939b7dfbe9166>2
image: <http://docker.io/library/busybox:1.35|docker.io/library/busybox:1.35>
imageID: <http://docker.io/library/busybox@sha256:98ad9d1a2be345201bb0709b0d38655eb1b370145c7d94ca1fe9c421f76e245a|docker.io/library/busybox@sha256:98ad9d1a2be345201bb0709b0d38655eb1b370145c7d94ca1fe9c421f76e245a>
lastState: {}
name: init
ready: true
restartCount: 0
state:
terminated:
containerID: <containerd://999f6086b33e202a6676de85ff0d085c746072ec240f9d85c5939b7dfbe9166>2
exitCode: 0
finishedAt: "2024-10-28T22:10:18Z"
reason: Completed
startedAt: "2024-10-28T22:10:16Z"
phase: Succeeded
podIP: 10.4.55.208
podIPs:
- ip: 10.4.55.208
qosClass: BestEffort
startTime: "2024-10-28T22:10:16Z"
user
10/28/2024, 11:27 PMuser
10/28/2024, 11:27 PMMarco Rodriguez
10/29/2024, 12:16 AM