Buckets
Before you can begin a full packet capture, you must configure a cloud storage bucket where Cloudflare can write the captured traffic data. Setting up a bucket is not required for sample packet captures, which complete immediately and can be downloaded directly from the API.
You can configure an Amazon S3 or Google Cloud Platform bucket to use as a target. You can also use R2 as a target using the API.
Learn how to set up a bucket for use with full packet captures.
- In the Cloudflare One ↗ dashboard, go to Network visibility > Diagnostics.
- Select the Buckets tab > Add a bucket.
- Select a bucket service and select Next.
- Enter the information related to your bucket for your service provider.
- When you are done, select Next.
The Prove ownership step of the Bucket configuration displays.
Before you can begin using a bucket, you must first enable destinations. Follow the destination setup steps for your provider, then return here to validate ownership.
Refer to the Amazon S3 or Google Cloud Storage documentation and follow the steps for those specific services.
Next, validate the bucket and confirm ownership.
After the initial bucket setup, you need to confirm you have access to the bucket via an ownership challenge. This verification prevents Cloudflare from writing capture data to a bucket you do not control. After you validate your bucket, you can begin using it to collect full packet captures.
- From the Prove ownership step of the Bucket configuration, locate the Ownership token field.
- Find the ownership challenge file that Cloudflare placed in your bucket, copy its contents, and enter them in the Ownership token field.
- When you are done, select Create. The Packet captures page displays.
The Buckets tab displays a list of the buckets associated with your account. Refer to the Status column to see the status of your bucket configuration.
The bucket field should be the URI of the bucket. For Amazon S3, the bucket field is in the form s3://<bucket-name>/<directory>?region=<bucket-region>, and for Google Cloud Storage the form is gs://<bucket-name>/<directory>.
curl https://api.cloudflare.com/client/v4/accounts/{account_id}/pcaps/ownership \--header "X-Auth-Email: <EMAIL>" \--header "X-Auth-Key: <API_KEY>" \--header "Content-Type: application/json" \--data '{ "destination_conf": "'${bucket}'"}'The response has a "filename" parameter which contains the content of the ownership-challenge text. Find the file in your bucket and copy the contents of the file.
{ "result": { "id": "cc20c2d6c62e11ecbe646b173af3b6b9", "status": "pending", "submitted": "2022-04-22T18:54:13.397413Z", "validated": "", "destination_conf": "gs://bucket-test", // Ensure you use a bucket that you created and registered in the Cloudflare dashboard. "filename": "ownership-challenge-1234.txt" }, "success": true, "errors": [], "messages": []}Validate the bucket by inserting the copied text in the ownership_text below:
curl https://api.cloudflare.com/client/v4/accounts/{account_id}/pcaps/ownership/validate \--header "X-Auth-Email: <EMAIL>" \--header "X-Auth-Key: <API_KEY>" \--header "Content-Type: application/json" \--data '{ "destination_conf": "'${bucket}'", "ownership_challenge": "'${ownership_text}'"}'{ "result": { "id": "cc20c2d6c62e11ecbe646b173af3b6b9", "status": "success", "submitted": "2022-04-22T18:54:13.397413Z", "validated": "2022-04-27T14:54:46.440548Z", "destination_conf": "gs://<bucket-name>", // Ensure you use a bucket that you created and registered in the Cloudflare dashboard "filename": "ownership-challenge-1234.txt" }, "success": true, "errors": [], "messages": []}If the status shows success, the bucket is configured and ready to use.
The bucket status displays one of the following options:
- Success: The bucket is fully verified and ready to use.
- Pending: The challenge response was initiated but is pending verification. Bucket verification can take five to ten minutes to finish processing.
- Failed: The bucket could not be validated. If this occurs, verify that Cloudflare has write access to your bucket and that you submitted the correct contents of the ownership challenge file.
View a list of all buckets configured on your account.
- In the Cloudflare One ↗ dashboard, go to Insights > Network visibility > Diagnostics.
- Select the Buckets tab.
The list of buckets associated with your account displays.
curl https://api.cloudflare.com/client/v4/accounts/{account_id}/pcaps/ownership \--header "X-Auth-Email: <EMAIL>" \--header "X-Auth-Key: <API_KEY>"{ "result": [ { "id": "9a993aa6c58711ec89d3037647342e63", "status": "success", "submitted": "2022-04-26T16:58:24.550762Z", "validated": "2022-04-26T17:01:18.426458Z", "destination_conf": "s3://test-bucket?region=us-east-1", "filename": "ownership-challenge-1234.txt" } ], "success": true, "errors": [], "messages": []}To learn how to collect packet captures, refer to Collect packet captures.
You can also use Cloudflare R2 as a storage destination for packet captures. R2 bucket configuration is available through the API only.
-
In the Cloudflare dashboard, go to the R2 page.
Go to Overview -
Select Create bucket.
-
Give your bucket a name > Create bucket.
-
Go to the R2 Overview page, and select Manage R2 API Tokens.
-
Select Create API Token.
-
In Permissions, choose Object Read & Write. Make sure you also select Apply to specific buckets only, and select the bucket you have created for PCAPs from the drop-down menu.
-
Select Create API Token.
-
Make sure you copy the Secret Access Key and Access Key ID values, as you will need them for the next step.
Create your initial request to R2:
curl https://api.cloudflare.com/client/v4/accounts/{account_id}/pcaps/ownership \--header "X-Auth-Email: <EMAIL>" \--header "X-Auth-Key: <API_KEY>" \--header "Content-Type: application/json" \--data '{ "destination_conf": "r2://<BUCKET_NAME>?account-id=<ACCOUNT_ID>&access-key-id=<R2_ACCESS_KEY_ID>&secret-access-key=<R2_SECRET_ACCESS_KEY>"}'The response has a "filename" parameter with the name of a file that Cloudflare wrote to your R2 bucket. You need to download it for the next step. Example:
{ "errors": [], "messages": [], "result": { "destination_conf": "<YOUR_R2_BUCKET>", "filename": "ownership-challenge-9883874ecac311ec8475433579a6bf5f.txt", "id": "9883874ecac311ec8475433579a6bf5f", "status": "success", "submitted": "2020-01-01T08:00:00Z", "validated": "2020-01-01T08:00:00Z" }, "success": true}Refer to the Validate a bucket API instructions for more details on the entire process to validate your R2 bucket. When specifying the R2 destination for this validation, exclude the secret and access keys from the URL.